[英]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.