2013-07-19 61 views
0

你好,我試圖將文件複製到多個位置。我寫了一個腳本,它將使用File :: Find和File :: Copy將文件複製到一個位置,但我無法將腳本複製到第二個或第三個位置。我試圖在腳本中添加第二個變量target2,這樣我也可以將JPG文件複製到第二個目標位置。當我嘗試這樣做時,我收到一條錯誤消息。我希望副本在一個將複製文件X秒的循環上運行,因此我還添加了睡眠功能。任何人都可以向我解釋爲什麼我不能複製到多個位置或幫助我找到一種方法來做到這一點?謝謝。Perl複製到多個位置

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

複製功能不能複製到2個目的地。調用它兩次:這裏

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

放眼看參數解釋:http://perldoc.perl.org/File/Copy.html#SYNOPSIS

由於文檔說:

An optional third parameter can be used to specify the buffer size used for copying. This is the number of bytes from the first file, that will be held in memory at any given time, before being written to the second file.

所以,當你指定的第三個參數,Perl的理解,你想要手動設置緩衝區大小。但是你給了一個字符串而不是數字,所以它將字符串轉換爲數字:0,並給出了一個錯誤:

Bad Buffer size for copy: 0

+0

謝謝。這有很大幫助。 :) – Nightzrain

相關問題