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