2

我想在我的文件中将模式“好”替换为“坏”。目前我正在做的是:

#!/perl/bin/perl

$filename= "abc.txt";

open my $fh, $filename;
my $text = do { local( $/ ); <$fh> };
close $fh;
$text =~s/good/bad/g;

有什么办法可以在不阅读整个文件的情况下做到这一点?

编辑:假设我知道文件中只有 1 个“好”。

PS,嗨,我是新来的。希望我做得对。

4

1 回答 1

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;
}
于 2013-07-15T10:12:07.690 回答