我正在尝试使用File :: Copy将文件复制到新文件名,但是收到错误信息说该文件不存在。
print "\nCopying $hash->{Filename1} to $hash->{Filename2}.\n"
copy( $hash->{Filename1}, $hash->{Filename2} ) or die "Unable to copy model. Copy failed: $!";
我已经检查过两个引用都已填充(通过打印它们)并且$ hash-> {Filename1}确实存在 - 而且确实存在。
我的错误信息是这个
Unable to copy model. Copy failed: No such file or directory at B:\Script.pl line 467.
任何人都对我可能做错了什么有任何想法?我在我的脚本中使用了这个完全相同的行,没有任何问题,所以我有点困惑。
File :: Copy有文件大小限制吗?
非常感谢。
答案 0 :(得分:2)
Filename1
可能存在,但Filename2
您的错误消息指出“没有这样的文件或目录在...”所以我正在调查您尝试将文件复制到的目录的可能性有点不足。
如果目标目录和文件 存在,您可能还想检查权限。
第一步是在尝试复制之前打印出两个文件名,以便您可以看到它们是什么,并从该角度调查问题。您还应该在问题中发布这些文件名,以便我们进一步提供帮助。很可能是其中一个文件名中存在狡猾的字符,例如忘记chomp
关闭的换行符。
关于文件大小限制的问题,我不相信模块本身会强加一个。如果您不提供缓冲区大小,它对于用于传输数据的块最多使用2G,但模块中没有任何内容限制整体大小。
可能是底层操作系统限制了它,但是,除非你的文件确实很大或者你的磁盘空间非常,否则它不会发挥作用。但是,由于您似乎正在使用b:
驱动器,因此您可能需要检查。我甚至不知道人们再次使用软盘: - )
答案 1 :(得分:2)
检查没有额外的空格或其他难以发现的文件名变量问题:
use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper( { filename1 => $hash->{Filename1}, filename2 => $hash->{Filename2} } );