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