raku - perl6 的统计函数
问题描述
perl6 中是否有另一种方法来获取文件属性详细信息,如大小、access_time、modified_time 等,而无需调用本机调用?
根据文档,它“不太可能作为其 POSIX 特定的内置实现”。
除了对 stat 的系统调用之外,还有哪些可用的解决方法选项?
任何想法或指针都非常感谢。
谢谢。
解决方案
请参阅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"(...)
.
推荐阅读
- typescript - 为什么@typescript-eslint/no-redeclare 规则指示误报?
- c# - 在不同目录中存储/使用 WPF App.config
- powershell - 如何将 powershell 输出字符串中的字符串作为参数传递给 get-content / cat(直接)?
- arduino - 如何停止 if 条件?
- c# - C# 将 DateTime 偏移量添加到大型集合中的 DateTime 属性
- python - 熊猫:如何用条件(字符数)连接行?
- node.js - 如何从端点创建 GraphQL 枚举?
- python - 在 Python 中创建一个从常量向上和向下递增的列表
- excel - 如何将 xlsx 电子表格中的特定工作表提取为文本文件?
- javascript - 使用 Javascript 更改 Firefox 插件 DOM 元素