【发布时间】:2019-10-01 13:43:44
【问题描述】:
我有一个非常大的 xml 文件。它里面有一定的递增数字,我想用不同的递增数字代替。我已经看过了,这是以前有人在这里建议的。不幸的是我不能让它工作:(
在下面的代码中,所有 40960 实例都应替换为 41984,所有 40961 实例都应替换为 41985 等等。没有任何反应。我做错了什么?
use strict;
use warnings;
my $old = 40960;
my $new = 41984;
my $string;
my $file = 'file.txt';
rename($file, $file.'.bak');
open(IN, '<'.$file.'.bak') or die $!;
open(OUT, '>'.$file) or die $!;
$old++;
$new++;
for (my $i = 0; $i < 42; $i++) {
while(<IN>) {
$_ =~ s/$old/$new/g;
print OUT $_;
}
}
close(IN);
close(OUT);
【问题讨论】:
-
对于
for循环中的每次迭代,您可能必须回到输入文件的开头,请参阅perldoc seek。但是可能有更有效的方法可以让您一次替换所有数字