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函数检查它们)。为什么不起作用?有任何情况会导致错误吗?
答案 0 :(得分:0)
copy
和move
以便在出错时设置$!
。检查参数是否符合您的预期也很好。要特别注意换行符和尾随空格的存在。
move($_, $new_dir)
or warn("Can't move \"$_\" to \"$new_dir\": $!\n");