【问题标题】:Copy work very well, while Move doesnt work at all.复制效果很好,而移动根本不起作用。
【发布时间】:2015-08-29 11:59:25
【问题描述】:
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";
}

问题是:复制工作得很好,但移动不想完成它的工作。它的工作有时取决于代码中的一些修改,但从不在循环中。 1行简单代码:

move($a, $b);

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

【问题讨论】:

  • print "MOVE PROBLEM: $!" 是否有助于获取更多详细信息?
  • 没想到!老师说这个变量非常有用,我忘记了。它说“权限被拒绝”。如何授予权限?
  • chmod 用于更改权限,chown 用于更改用户和组所有权。它们都是命令行实用程序、Perl 函数和系统调用。
  • 我正在使用 Windows。我已经更改了属性,但没有帮助。
  • 尝试使用 windows move/? 从命令行移动相同的文件。

标签: windows perl command-line permissions


【解决方案1】:

copymove 记录在错误时设置 $!。检查参数是否与您期望的一样也很好。特别注意换行符和尾随空格的存在。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多