Perl复制到多个位置

时间:2013-07-19 17:02:38

标签: perl while-loop copy

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

   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

1 个答案:

答案 0 :(得分:4)

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

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

点击此处查看参数说明:http://perldoc.perl.org/File/Copy.html#SYNOPSIS

正如文档所说:

  

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

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

  

副本的缓冲区大小:0

相关问题