Shell命令成功是一般返回0
下面一段代码
my $cmd = "scp $source $dest";
`$cmd` or die $!
在执行这段代码的时候,经常会出现这样一个错误,形如illegal seek xxx,但是会发现其实文件已经正确的拷贝过去了。什么原因呢?因为`$cmd`的返回值并不能表示错误信息,也就是说这个命令成功的返回值是0,而$!中存储的是前面某个命令的错误代码。详情看这里
http://www.megasolutions.net/perl/Illegal-seek-50808.aspx
所以这种写法本身就不正确。