Perl文件::复制不起作用

时间:2013-09-24 03:19:45

标签: perl file copy

我正在尝试使用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有文件大小限制吗?

非常感谢。

2 个答案:

答案 0 :(得分:2)

Filename1可能存在,但Filename2

怎么办?

您的错误消息指出“没有这样的文件或目录在...”所以我正在调查您尝试将文件复制到有点不足。

如果目标目录和文件 存在,您可能还想检查权限。

第一步是在尝试复制之前打印出两个文件名,以便您可以看到它们是什么,并从该角度调查问题。您还应该在问题中发布这些文件名,以便我们进一步提供帮助。很可能是其中一个文件名中存在狡猾的字符,例如忘记chomp关闭的换行符。

关于文件大小限制的问题,我不相信模块本身会强加一个。如果您不提供缓冲区大小,它对于用于传输数据的块最多使用2G,但模块中没有任何内容限制整体大小。

可能是底层操作系统限制了它,但是,除非你的文件确实很大或者你的磁盘空间非常,否则它不会发挥作用。但是,由于您似乎正在使用b:驱动器,因此您可能需要检查。我甚至不知道人们再次使用软盘: - )

答案 1 :(得分:2)

检查没有额外的空格或其他难以发现的文件名变量问题:

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper( { filename1 => $hash->{Filename1}, filename2 => $hash->{Filename2} } );