繁体   English   中英

perl move抛出错误,但确实移动了文件

[英]perl move throws error, but does move the file

我对perl很新,只是发现了一些非常意外的行为。

我使用从File::Copy移动来重命名文件夹。 它按预期工作,但是当我查看返回值变量$! 之后,它显示错误。

我使用的相关代码:

$helpr =~ s/\./ /g;

move($file,$helpr);
print $!;

输出:

[j@box test]$ ls
my.test.dir
[j@box test]$ fileRenamer.pl
No such file or directory
[j@box test]$ ls
my test dir

无论如何,当作业完成时,为什么会出现错误代码? 我错过了什么?

感谢大家!

正如mpapec所说,除非move返回false值,否则不应使用错误消息,例如使用... or die $! 但是,至于为什么会发生这种情况:

我以前见过这个,好像File::Copy正在设置$! 不合逻辑。 我查看了源代码,发现了这一行:

($tosz1,$tomt1) = (stat($to))[7,9];

其中$to是文件移动到的文件名。 这项检查是为了处理覆盖文件的异常,当然如果文件不存在, $! 将被设定。 我会将此归类为各种错误。

检查$! 只有当move()失败时才会有意义(返回false),

move($file,$helpr) or print $!;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM