0

我想替换文件中的一些字符串并将其保存回来。我已经有代码可以打开文件,找到字符串并替换它。但是文件没有被保存。它有什么问题?

open MYINPUTFILE, $EventLog;
my @lines = <MYINPUTFILE>; # read file into
my @errors = ();
my $size = $#lines + 1;
for ($i = 0; $i < $size; $i++) {
    if ($lines[$i] =~ m/$s1(.*)$s2/) {
        $lines[$i] =~ s/$s1(.*)$s2/$s1.($1+4).$s2/eg;
        print $lines[$i] ;
    }
}
close MYINPUTFILE;
4

2 回答 2

1

您的脚本以读取模式打开文件,并打印到 STDOUT。您需要打开第二个临时文件,将更改后的输出写入其中。最后,删除第一个文件并将临时文件重命名为最终文件。

另外,我会这样做:

替换文件句柄:

open my $input_file, '<', $EventLog or die $!;

不要将整个文件读入数组(对于大文件来说这是个坏主意)。逐行阅读并妥善处理:

while( my $line = <$input_file> ) {
   #...
}
于 2013-04-03T07:00:38.550 回答
0

Perl FAQ 中有关于这个主题的好建议。

如何在文件中更改、删除或插入一行,或附加到文件的开头?

于 2013-04-03T10:13:27.030 回答