2013-03-04 160 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`;