Perl文件::Copy-isn';行不通
我正试图使用file::copy将文件复制到新文件名,但收到一个错误,表示该文件不存在Perl文件::Copy-isn';行不通,perl,file,copy,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->
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是否有文件大小限制
非常感谢。
Filename1
可能存在,但是Filename2
呢
您的错误消息指出“没有这样的文件或目录位于…”,因此我将调查您试图将文件复制到的目录是否存在缺陷
如果目标目录和文件确实存在,您可能还需要检查权限
第一步是在尝试复制之前打印出两个文件名,以便您可以看到它们是什么,并从该角度调查问题。你也应该在你的问题中公布这些文件名,这样我们可以进一步提供帮助。很可能其中一个文件名中有一个不可靠的字符,比如一个你忘了chomp
off的换行符
如果您对文件大小限制有疑问,我不认为模块本身强加了限制。如果不提供缓冲区大小,则用于传输数据的块的最大值为2G,但模块中没有任何内容限制总体大小
可能是底层操作系统限制了它,但是,除非你的文件真的很大或者你的磁盘空间很小,否则这不会起作用。但是,由于您似乎在
b:
驱动器上工作,因此您可能需要检查。我甚至不知道人们已经在使用软盘了:-)检查文件名变量是否有多余的空白或其他难以发现的问题,方法是:
use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper( { filename1 => $hash->{Filename1}, filename2 => $hash->{Filename2} } );
谢谢你,帕克斯。我把文件名打印在复印件之前。这样做是为了检查它们是否被定义。文件名2不存在。我正在尝试使用副本来创建它。Perl文档似乎不需要这样做。“第二个参数将写入(并在需要时创建)”。我在一个目录中工作,脚本的其余部分也可以读取和写入,没有问题。Tiger,让我们看看打印出来的
的输出,完全一样。感谢您的time Pax,我对使用它表示歉意。。。。恐怕答案是光盘满了。一旦我清理出一些空间,它就完美地运行了。可惜输出错误没有这么说,这可能会让我省心。谢谢你抽出时间,我对你的使用表示歉意。。。。恐怕答案是光盘满了。一旦我清理出一些空间,它就完美地运行了。遗憾的是,输出错误没有说这一点,这可能会让我省心。