首页 > 解决方案 > perl6 的统计函数

问题描述

perl6 中是否有另一种方法来获取文件属性详细信息,如大小、access_time、modified_time 等,而无需调用本机调用?

根据文档,它“不太可能作为其 POSIX 特定的内置实现”。

除了对 stat 的系统调用之外,还有哪些可用的解决方法选项?

任何想法或指针都非常感谢。

谢谢。

标签: rakustatfile-attributes

解决方案


请参阅IO::Path 文档

例如:

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

.IO在一个字符串上创建一个对应于文件系统条目的IO::Path对象,该文件系统条目对应于字符串给出的路径。

在doc 上ACCEPTS查看使用联结同时获取多个属性的示例。


我不确定以下是否太多。如果是,请忽略它。希望它会有所帮助。

您可以通过它的 HOW 对象(也称为高阶工作对象、对象如何工作对象、元对象——无论您想如何称呼它们)来发现/探索 Perl 6 中可用的一些内容,这些对象知道特定类型的对象如何工作。

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"(...).


推荐阅读