한 번에 하나의 파일을 열어 다른 파일을 열고 두 번째 파일의 첫 번째 파일에서 읽은 행의 일부를 검색하고 모든 인스턴스를 다른 부분으로 바꾸려고 시도합니다. 첫 번째 파일에서 읽은 줄의. 내가 그것을 실행하고 그것을 실행하고 콘솔에서 결과를 볼 수 있지만 파일이 수정되지 않습니다. 무엇이 실수 일 수 있습니다. 어떤 사람은 이것을 권유 할 수 있습니까?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