我想替换文件中的一些字符串并将其保存回来。 我已经有代码可以打开文件,找到字符串并替换它。但文件没有得到保存。这有什么问题?
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;
答案 0 :(得分:1)
您的脚本以读取模式打开文件,然后打印到STDOUT。 您需要打开第二个临时文件,将更改的输出写入其中。最后,删除第一个文件并将临时文件重命名为最终文件。
另外,我会这样做:
替换FILEHANDLES:
open my $input_file, '<', $EventLog or die $!;
不要将整个文件读入数组(对于大文件来说这是一个坏主意)。逐行阅读并正确处理:
while( my $line = <$input_file> ) {
#...
}
答案 1 :(得分:0)
在Perl FAQ中有关于这个主题的很好的建议。
How do I change, delete, or insert a line in a file, or append to the beginning of a file?