复制工作非常好,而Move根本不起作用。

时间:2015-06-13 15:54:16

标签: windows perl command-line permissions

use File::Copy;


#Variable with my directory I work on
$dir = "C:/projekty/perl/muzyka";

#Variables used to find all mp3 files
$dir_tmp = $dir."/*.mp3";
@files = glob( $dir_tmp );

#Variable with directory I want to create and put my files to
$new_dir = "C:/projekty/perl/muzyka/new_dir";

#Creating new directory
mkdir ( $new_dir ) or print "MKDIR PROBLEM";
直到这一刻,一切都很好。现在我把循环:

foreach( @pliki )
{   
    copy( $_, $new_dir) or print "COPY PROBLEM";
}

或:

foreach( @pliki )
{   
    move( $_, $new_dir) or print "MOVE PROBLEM";
}

问题是:复制工作完全正常,但Move不想做它的工作。它的工作原理有时取决于代码中的一些修改,但从不在循环中。带1行的简单代码:

move($a, $b);

完美无缺。但是如果我使用某些条件或循环它就会停止工作,即使参数(目录)看起来没问题(我用一个循环中的print函数检查它们)。为什么不起作用?有任何情况会导致错误吗?

1 个答案:

答案 0 :(得分:0)

记录

copymove以便在出错时设置$!。检查参数是否符合您的预期也很好。要特别注意换行符和尾随空格的存在。

move($_, $new_dir)
   or warn("Can't move \"$_\" to \"$new_dir\": $!\n");