0

您好,我正在尝试将文件复制到多个位置。我编写了一个脚本,它将使用 File::Find 和 File::Copy 一起将文件复制到一个位置,但我无法将脚本复制到第二个或第三个位置。我尝试将第二个变量 target2 添加到脚本中,这样我也可以将 JPG 文件复制到第二个目标位置。当我尝试这样做时,我收到一条错误消息。我希望副本在一个循环上运行,该循环将复制文件 X 秒数,所以我也添加了睡眠功能。谁能向我解释为什么我不能复制到多个位置或帮助我找到一种方法来做到这一点?谢谢你。

   while (1)
   { sleep (10);
    find(
       sub {
         if (-f &&/\.jpg$/i) {
           print "$File::Find::name -> $target, $target2";
           copy($File::Find::name, $target ,$target2)
            or die(q{copy failed:} . $!);

            }
           },
           @source
             ); 

            }

错误消息:复制的错误缓冲区大小:0

4

1 回答 1

4

复制功能无法复制到 2 个目的地。调用它两次:

copy($File::Find::name, $target);
copy($File::Find::name, $target2);

看这里看参数解释: http: //perldoc.perl.org/File/Copy.html#SYNOPSIS

正如文档所说:

可选的第三个参数可用于指定用于复制的缓冲区大小。这是第一个文件中的字节数,在写入第二个文件之前,它将在任何给定时间保存在内存中。

因此,当您指定第三个参数时,Perl 理解您想要手动设置缓冲区大小。但是你给了一个字符串而不是一个数字,所以它将字符串转换为一个数字:0,并给你一个错误:

复制的错误缓冲区大小:0

于 2013-07-19T17:06:19.873 回答