функция stat для perl6 - PullRequest
       39

функция stat для perl6

0 голосов
/ 29 августа 2018

Есть ли в perl6 альтернативный способ получения таких атрибутов файла, как размер, access_time ,ified_time ... и т. Д., Без необходимости вызывать собственный вызов?

В соответствии с doc это " вряд ли будет реализован как встроенный как его специфичный для POSIX ".

Какие варианты обходного пути доступны, кроме системного вызова stat?

Любые идеи или указатели очень ценятся.

Спасибо.

1 Ответ

0 голосов
/ 29 августа 2018

См. IO :: Path doc .

Например:

say 'foo'.IO.s; # 3 if 'foo' is an existing file of size 3 bytes

.IO в строке создает объект IO::Path, соответствующий записи файловой системы, соответствующей пути, указанному в строке.

См. Примеры использования соединений для одновременного получения нескольких атрибутов в документе ACCEPTS.


Я не уверен, что следующее слишком много. Проигнорируйте это, если это. Надеюсь, это полезно.

Вы можете обнаружить / исследовать некоторые из того, что доступно в Perl 6, через его объекты HOW (например, объекты Workings высшего порядка, объекты Objects Work, метаобъекты - как вы хотите их называть), которые знают, как работают объекты определенного типа. .

say IO::Path.^methods

отображает:

(BUILD new is-absolute is-relative parts volume dirname basename extension
 Numeric sibling succ pred open watch absolute relative cleanup resolve
 parent child add chdir rename copy move chmod unlink symlink link mkdir
 rmdir dir slurp spurt lines comb split words e d f s l r w rw x rwx z
 modified accessed changed mode ACCEPTS Str gist perl IO SPEC CWD path BUILDALL)

Это некоторые методы, доступные для объекта IO::Path.

(Вы можете получить более или менее с помощью наречий, например, say IO::Path.^methods(:all), но дисплей по умолчанию нацелен на то, чтобы дать вам те из них, которые вам наиболее интересны. Стрелка вверх (^) означает вызов метода ( .methods) не отправляется инвоканту, а отправляется "вверх", до объекта HOW, как объяснено выше.)

Вот пример применения некоторых из них по одному:

spurt 'foo', 'bar'; # write a three letter string to a file called 'foo'. 
for <e d f s l r w rw x rwx z modified accessed changed mode>
  -> $method { say 'foo'.IO."$method"() }

Вторая строка выполняет цикл for по методам, перечисленным по именам строк в конструкции <...>. Чтобы вызвать метод для инвоканта по его имени в переменной $qux, напишите ."$qux"(...).

...