1

私のプログラムでは、外部ファイルの特定のハッシュの値を新しく作成された値に置き換えようとしています。外部ファイルにはキーからタブ区切りの値があり、外部ファイルからハッシュを読み込んでいました。私はオンラインで見回してきましたが、これが私がそれを行う方法を理解できる最も近い方法ですが、うまくいかないようです.

            open(IN, ">>$file") || die "can't read file $file";
            while (<IN>) {
            print IN s/$hash{$key}/$newvalue/;
            }
           close (IN) 

この式で何が欠けているのかよくわかりません。

4

4 に答える 4

4

Tie::Fileでこれを修正できます。

use Tie::File;

tie @array, 'Tie::File', $file or die "Could not tie $file: $!";

for (@array) {
    s/$hash{$key}/$newvalue/;
}
untie @array;
于 2008-12-18T22:09:54.587 に答える
1

http://www.sthomas.net/roberts-perl-tutorial.htm/ch13/Modifying_a_File_with___「$INPLACE_EDIT
perl」でグーグル検索

于 2011-01-07T21:36:27.010 に答える
0

同じファイルの読み取りと書き込みを試みていますが、機能しません。読み取り、置換してから別のファイルに書き込む必要があります。その後、本当に1つのファイルが必要な場合は、入力ファイルを今作成したファイルに置き換えることができます。

于 2008-12-18T22:04:26.097 に答える
0

これは効率的ではありませんが、私のperl-fuが悪い場合を除いて、機能するはずです。

open(IN, "<<$file") || die "can't read file $file";
open(OUT, ">>${file}.tmp") || die "can't open file $file";
while (<IN>) {
    print OUT s/$hash{$key}/$newvalue/;
}
close(IN);
close(OUT);
exec("mv ${file}.tmp $file");

perlであなたのために移動するコマンドがあるかもしれませんが、私はperlの人ではありません。

于 2008-12-18T22:06:15.330 に答える