了解find2perl结果

Tim*_* S. 4 perl find

我一直在编写一个脚本,它将递归搜索文件系统并删除任何超过20天的文件(没有目录).我使用了find2perl命令(这是File :: Find的一部分),这就是结果.(我注意到它不理解该-delete选项,所以我不得不使用旧-exec...选项.)

(截断的脚本部分)

sub delete_old_files {
    my ($dev,$ino,$mode,$nlink,$uid,$gid);

    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
    -f _ &&
    (int(-M _) > 20) &&
    unlink($_);
}
Run Code Online (Sandbox Code Playgroud)

我理解lstat部分,-f文件检查,以及unlink,但我不确定如何(int(-M _) > 20)工作.显然它是在20天内检查修改日期,但我以前从未见过这种语法,并且很想知道它来自何处以及它是如何工作的.我也很好奇它怎么能引用迭代器作为一个普通的下划线,而无需使用$_-f与时间检查片.

Sin*_*nür 5

lstat调用的结果被缓存.通过使用_,您可以避免多个lstat调用.

与stat函数(包括设置特殊_文件句柄)相同但是stats是符号链接而不是符号链接指向的文件...(强调我的)

统计:

如果stat被传递由下划线的特殊文件句柄,没有stat完成,但目前内容stat结构从过去的stat,lstat或者filetest被返回.