0

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

4

2 回答 2

3

File::Copy 不仅支持按名称复制,还支持按文件句柄复制:

use File::Copy qw(copy);

copy(FILE_IN, FILE_OUT);

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

于 2013-03-04T06:50:38.800 回答
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: $!";

但请注意,上述内容不会保留文件的权限。如果您想保留它们,请将其用作别名 - 将 'copy' 调用为 'cp' 使其行为类似于 shell 命令 'cp':

use File::Copy "cp"

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

最后,虽然它不是非常便携的解决方案,但您始终可以调用 shell:

`cp file1 file2`;
于 2013-03-04T06:47:52.797 回答