raku - perl6的stat函数

标签 raku stat file-attributes

在perl6中是否有另一种方法可以获取文件属性详细信息,例如大小,access_time,modified_time ..等,而无需调用 native 调用?

根据doc,它“不太可能作为特定于POSIX的内置项来实现”。

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

任何想法或指针都将不胜感激。

谢谢。

最佳答案

参见the IO::Path doc

例如:

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

字符串上的.IO创建与文件系统条目相对应的IO::Path对象,该文件系统条目与字符串所给定的路径相对应。

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

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

您可以通过知道特定类型的HOW对象的HOW对象(又称高阶工作对象,How Objects Work对象,metaobjects-无论您想称呼它们)来发现/探索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"(...)

关于raku - perl6的stat函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079501/

相关文章:

perl - 在 Raku 中使用 Perl 5 模块 Data::Printer 的 `show_tied` 选项时,如何关闭它?

macros - 宏定义中的"Too few positionals"

raku - Raku中的xx运算符如何能够延迟对其左侧代码操作数的求值?

linux - 如何读取目录中的文件时间戳

Swift3.0 fileAttributes 在现有文件上抛出 "no such file"错误

node.js - windows只读属性中的nodejs fs模式操作

raku - 为 Perl 6 NativeCall 结构添加用户模式类型

linux - 关于/proc/stat命令输出的进程状态

c - 目录和文件的递归列表 C

file - 如何更改文件列表的读取属性?