一度に読み込んだ1つのファイルを一度に開き、別のファイルを開き、2番目のファイルの最初のファイルから読み込んだ行の一部を検索し、すべてのインスタンスを他の部分に置き換えようとします私はそれを実行しているときに私はコンソール上で結果を見ることができるが、ファイルが変更されていない最初のfile.Whenから読み取った行の。何が間違いかもしれない。ある人がこれを提案してもらえますか?perlでファイルの内容を変更する方法は?
use strict;
use warnings;
use autodie; # die if problem reading or writing a file
my $filename = 'compare.txt';
open(my $fh, '+<', $filename) or die "Could not open file '$filename' $!";
while(<$fh>){
my $readline= "$_";
print("\n");
my @arr=split(',',$readline);
print($arr[0]."\n".$arr[1]);
replace($arr[0],$arr[1]);
}
close $fh;
sub replace
{
my $search=shift(@_);
my $replace=shift(@_);
my $filename2 = 'replace.txt';
open(my $fh1, '+<', $filename2) or die "Could not open file '$filename' $!";
while(<$fh1>)
{
my $readline2= "$_";
$readline2=~s/$search/$replace/g;
print($readline2);
print("\n");
}
close $fh1;
}
あなたが書くことはありませんあなたファイルを置き換えるだけで、コンソールに出力するだけです。新しいファイル(変更あり)を書き込んだ後、変更する必要のあるファイルに移動する必要があります。 – zdim
'+ <'モードは必要ありません(使用しないでください)。読んで私の$ fh、<、$ file ... 'を開いてください。 – zdim
'while(my $ readline = <$fh>){..}'を実行でき、 '$ readline'は' $ _'にあった行に割り当てられ、ループ内に存在します(見えます)。 – zdim