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