将文件(句柄)的内容写入不同的文件句柄

时间:2013-03-04 06:41:38

标签: perl

如何将一个文件/文件句柄的内容写入另一个文件/文件句柄?我知道我可以打开文件,将输入插入变量而不是将变量打印到第二个文件句柄,但我想知道是否有更好的/库解决方案可用,也许还可以处理大文件(并且不加载整个文件到内存中。)

2 个答案:

答案 0 :(得分:3)

File :: Copy不仅支持按名称but by filehandle进行复制:

use File::Copy qw(copy);

copy(FILE_IN, FILE_OUT);

其中FILE_IN和FILE_OUT是为读写而打开的文件句柄。

答案 1 :(得分: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。如果你想保留它们,可以将它用作别名 - 调用'copy'作为'cp'使它的行为类似于shell命令'cp':

use File::Copy "cp"

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

最后,尽管它不是非常便携的解决方案,但您始终只需调用shell:

`cp file1 file2`;
相关问题