我收到一个我不明白的错误.我正在使用File:Find使用Activestate Perl 5.8.8在Windows上递归fylesystem并尝试stat $File::Find::name
; 所以我不是 - stat
从文本文件扫描得到的文件名需要chomp
-ing或换行删除.我无法获得文件修改时间,mtime
在:
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($File::Find::name);
Run Code Online (Sandbox Code Playgroud)
所以试试
-s $File::Find::name
Run Code Online (Sandbox Code Playgroud)
给我错误:
包含换行符的文件名不成功
找到的典型文件名是F01-01-10 Num 0-00000.pdf,但即使在E02中重命名也会出现相同的错误.pdf
rjh*_*rjh 11
根据perldiag,如果任何文件操作失败并且文件名恰好包含换行符,则将发出警告"包含换行符的文件名不成功".
假设是,正如您所说,文件名来自标准输入或类似文件,并且用户忘记chomp
了换行符.您可能想要传递字符串chomp
,只是为了查看它是否有效.
有一些证据表明&CORE::stat
mtime可能会被OS patchlevel和ActiveState Perl版本的某些组合破坏 - 建议的解决方法是使用File :: stat模块,如下所示:
my $sb = stat($File::Find::name);
my $mtime = scalar localtime $sb->mtime;
Run Code Online (Sandbox Code Playgroud)
...你可能会发现File :: stat的对象表示比返回的列表更方便CORE::stat
.
归档时间: |
|
查看次数: |
11464 次 |
最近记录: |