2013-03-04 162 views
0

我怎麼能寫一個文件/文件句柄的另一個內容是什麼?我知道我可以打開文件,將輸入變爲變量而不是將變量打印到第二個文件句柄,但我想知道是否有更好的/庫解決方案可用,也許還處理大型文件(並且不會加載整個文件存入內存)。寫文件(句柄)的內容,以不同的文件句柄

回答

3

文件::複製不僅支持按名稱,but by filehandle複製:

use File::Copy qw(copy); 

copy(FILE_IN, FILE_OUT); 

其中FILE_IN和FILE_OUT的文件句柄打開閱讀和寫作。

1

我敢肯定,整個文件這一個不加載到內存:

open F, "file1" or die "Error reading file1"; 
open G, ">file2" or die "Error writing file2"; 

print G while <F>; 

close F; 
close G; 

如果要複製一個文件,而不是閱讀它,使用:

use File::Copy; 

copy("file1","file2") or die "Error: $!"; 

但請不要超過will not preserve file's permissions。如果你想保留它們,把它作爲一個別名 - 調用「複製」爲「CP」使得它表現得像shell命令「CP」:

use File::Copy "cp" 

cp("file1", "file2") or die "Error: $!"; 

最後,雖然這不是很便攜的解決方案,可以隨時只是調用外殼:

`cp file1 file2`;