Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl文件::Copy-isn';行不通_Perl_File_Copy - Fatal编程技术网

Perl文件::Copy-isn';行不通

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->

我正试图使用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是否有文件大小限制


非常感谢。

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,我对使用它表示歉意。。。。恐怕答案是光盘满了。一旦我清理出一些空间,它就完美地运行了。可惜输出错误没有这么说,这可能会让我省心。谢谢你抽出时间,我对你的使用表示歉意。。。。恐怕答案是光盘满了。一旦我清理出一些空间,它就完美地运行了。遗憾的是,输出错误没有说这一点,这可能会让我省心。