私は巨大なテキストファイルと、それの最初の5行を持っているが、以下のように読み取りますは
This is fist line
This is second line
This is third line
This is fourth line
This is fifth line
を今、私は3行目のランダムな位置に何かを書きたいですその行の文字を私が書いている新しい文字列で置き換えるファイル。私は以下のコードでそれを達成することができる午前:
use strict;
use warnings;
my @pos = (0);
open my $fh, "+<", "text.txt";
while(<$fh) {
push @pos, tell($fh);
}
seek $fh , $pos[2]+1, 0;
print $fh "HELLO";
close($fh);
しかし、私はテキストは以下の読むように、私はそのファイルから全体の三行を削除することができますどのようなアプローチの同じ種類を把握することはできませんよ:
This is fist line
This is second line
This is fourth line
This is fifth line
ファイル全体を配列に読み込む必要はなく、Tie :: Fileも使用しません。シークとティーチを使用して私の要件を達成することは可能ですか?解決策は非常に役に立つでしょう。
と同じです。なぜ「Tie :: File」を使用したくないのですか?私はそれがこの目的には理想的だと思います。 – Borodin
@Borodin Tie :: Fileファイルを配列に読み込んだら、メモリを消費しませんか?その場合、モジュールの-memoryオプションが役立つでしょうか? –