我想在我的文件中将模式“好”替换为“坏”。目前我正在做的是:
#!/perl/bin/perl
$filename= "abc.txt";
open my $fh, $filename;
my $text = do { local( $/ ); <$fh> };
close $fh;
$text =~s/good/bad/g;
有什么办法可以在不阅读整个文件的情况下做到这一点?
编辑:假设我知道文件中只有 1 个“好”。
PS,嗨,我是新来的。希望我做得对。
我想在我的文件中将模式“好”替换为“坏”。目前我正在做的是:
#!/perl/bin/perl
$filename= "abc.txt";
open my $fh, $filename;
my $text = do { local( $/ ); <$fh> };
close $fh;
$text =~s/good/bad/g;
有什么办法可以在不阅读整个文件的情况下做到这一点?
编辑:假设我知道文件中只有 1 个“好”。
PS,嗨,我是新来的。希望我做得对。
你可以使用Tie::File
:
#!/usr/bin/perl
use strict;
use Tie::File;
my $filename = ...;
tie my @lines, 'Tie::File', $filename or die;
for (@lines) {
s/good/bad/g and last;
}
还要确保不是整个文件都被吞入您想要一个接一个地读取行,例如使用:
#!/usr/bin/perl
use strict;
use Tie::File;
my $filename = ...;
tie my @lines, 'Tie::File', $filename or die;
for(my $i=0; ; $i++) {
last if !defined $lines[$i]; # eof
last if $lines[$i] =~ s/good/bad/g;
}