我想在我的文件中用'bad'替换'good'模式。目前我在做的是:
#!/perl/bin/perl
$filename= "abc.txt";
open my $fh, $filename;
my $text = do { local( $/ ); <$fh> };
close $fh;
$text =~s/good/bad/g;
有没有办法可以在不读完整个文件的情况下做到这一点?
编辑:假设我知道文件中只有1个“好”。
P.S.,嗨,我是新来的。希望我能正确地做到这一点。
答案 0 :(得分:2)
您可以使用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;
}