替换文件中的某些字符串并保存

时间:2013-04-03 05:59:46

标签: perl

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

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;

2 个答案:

答案 0 :(得分:1)

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

另外,我会这样做:

替换FILEHANDLES:

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

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

while( my $line = <$input_file> ) {
   #...
}

答案 1 :(得分:0)