如何在Perl中replace现有文件中的string?
我想在名为1_classification.dat,2_classification.dat等的所有文本文件中将“blue”replace为“red”。 我想编辑相同的文件,所以我试过这个代码,但它不起作用。 我哪里错了?
@files=glob("*_classification.dat"); foreach my $file (@files) { open(IN,$file) or die $!; <IN>; while(<IN>) { $_='~s/blue/red/g'; print IN $file; } close(IN) }
有没有单行的错误?
$ perl -pi.bak -e 's/blue/red/g' *_classification.dat
说明
-
-p
进程,然后逐行打印<>
-
-i
激活就地编辑。 使用.bak
扩展名备份文件 - 正则expression式replace将逐行地作用于隐式variables,即文件内容
$_='~s/blue/red/g';
呃,什么?
只是
s/blue/red/g;
或者,如果你坚持使用一个variables(这在使用$ _时是不必要的,但我只想显示正确的语法):
$_ =~ s/blue/red/g;