0

あるファイル/ファイルハンドルの内容を別のファイルに書き込むにはどうすればよいですか?私はファイルを開いて、変数を2番目のファイルハンドルに出力するよりも変数に入力を丸呑みすることができることを知っていますが、おそらく大きなファイルも処理する(そしてロードしない)より良い/ライブラリソリューションがあるかどうか疑問に思いましたファイル全体をメモリに)。

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」として呼び出すと、シェルコマンド「cp」のように動作します。

use File::Copy "cp"

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

最後に、移植性の高いソリューションではありませんが、いつでもシェルを呼び出すことができます。

`cp file1 file2`;
于 2013-03-04T06:47:52.797 に答える