Как я могу открыть файл для записи, только если он не существует в Perl 6?

Согласно открытым документам, существуют наречия для чтения, письма и добавления. Это нормально, чего я и ожидал. У меня есть конкретное приложение, которое использует sysopen для лучшего контроля, и я пытался переписать его на Perl 6. Я знаю о NativeCall (как упоминалось в мой вопрос о kill), но есть ли что-то встроенное, что мне не хватает?


person brian d foy    schedule 14.04.2017    source источник


Ответы (1)


Это случай неполной документации:

В MoarVM open поддерживает наиболее распространенные флаги POSIX с 2015 года, включая O_EXCL через именованный параметр :exclusive.

Комбинация флагов, которую вы ищете,

my $fh = open "file", :mode<wo>, :create, :exclusive;

что можно записать более компактно как

my $fh = open "file", :x;

Мы надеемся, что это будет задокументировано в рамках действующего гранта Стандартизация, тестовое покрытие и документирование подпрограмм ввода-вывода Perl 6. На данный момент подробности можно найти в журнале фиксации. С тех пор произошли некоторые незначительные изменения; в частности, :mode<pipe> был удален и добавлена ​​реализация JVM (которая, однако, не позволяет вам так свободно комбинировать флаги, как это делает MoarVM).

person Christoph    schedule 14.04.2017