加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 为什么Perl会抱怨“包含换行符的文件名不成功”?

发布时间:2020-12-14 02:08:54 所属栏目:Windows 来源:网络整理
导读:我收到一个我不明白的错误.我正在使用File:Find使用Activestate Perl 5.8.8在 Windows上递归fylesystem并尝试使用stat $File :: Find :: name;所以我没有统计从文本文件扫描得到的文件名需要删除或换行删除.我无法获得文件修改时间,mtime在: my ($dev,$ino
我收到一个我不明白的错误.我正在使用File:Find使用Activestate Perl 5.8.8在 Windows上递归fylesystem并尝试使用stat $File :: Find :: name;所以我没有统计从文本文件扫描得到的文件名需要删除或换行删除.我无法获得文件修改时间,mtime在:

my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($File::Find::name);

所以试试

-s $File::Find::name

给我错误:

Unsuccessful stat on filename containing newline

找到的典型文件名是F01-01-10 Num 0-00000.pdf,但即使在E02中重命名也会出现相同的错误.pdf

解决方法

根据 perldiag,如果任何文件操作失败并且文件名恰好包含换行符,则将发出警告“包含换行符的文件名不成功”.

假设,正如你所说,文件名来自标准输入或类似文件,并且用户忘记了取消换行符.你可能想要通过chomp传递字符串,只是为了看它是否有效.

还有some evidence& CORE :: stat mtime可能会被OS patchlevel和ActiveState Perl版本的某些组合打破 – 建议的解决方法是使用File::stat模块,如下所示:

my $sb = stat($File::Find::name);
my $mtime = scalar localtime $sb->mtime;

…你可能会发现File :: stat的对象表示比CORE :: stat返回的列表更方便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读