Pau*_*och 4 perl copy windows-server-2008
我有一个适用于Windows XP的Perl脚本.它使用File :: Copy的move功能将目录树移动到同一驱动器上的另一个位置.该脚本在Windows 2008上失败(静默).没有任何移动,没有删除任何内容.
我正在使用ActiveState Perl 5.10.0 Build 1005和它附带的File :: Copy.
有人知道Windows 2008上的ActiveState Perl可能会导致这个问题吗?
示例脚本:
use File::Copy;
print "Move AAA to ZZZ\n";
move("AAA", "ZZZ");
print "Done.\n";
Run Code Online (Sandbox Code Playgroud)
cas*_*key 12
从文档:
返回
所有函数在成功时返回1,在失败时返回0.$!如果遇到错误,将设置.
这个例子无声地失败,因为什么都没有检查$!失败了.试试这个:
move($from, $to) || die "Failed to move files: $!";
Run Code Online (Sandbox Code Playgroud)
如果您不想检查返回值,可以autodie为您执行此操作.
由于move()并copy()返回零表示错误,这就是autodie假设,它是相当直接的.
use strict;
use warnings;
use File::Copy;
use autodie qw'copy move';
move("AAA", "ZZZ"); # no need to check for error, because of autodie
print "Done.\n";
Run Code Online (Sandbox Code Playgroud)
假设" AAA"不存在,这里是输出(on STDERR).
Can't move('AAA', 'ZZZ'): No such file or directory at test.pl line 7