Perl找到并更换一个衬垫

时间:2015-07-01 22:38:26

标签: perl

我一直在查看另一个查找并替换Perl上的问题,而且我不确定如何在一行中实现这种变化。唯一的区别是我想要替换两个东西,一个是原始的,一个是替换原始字符串的修改。我在pm模块中的代码是:

my $num_args = $#ARGV + 1;
if ($num_args != 2) {
    print "\nUsage: pscript.pm path to file [VERSION]\n";
    exit;
}

my $version = $ARGV[1];
my $revision = $ARGV[1];
$revision =~ s/.*\.//g;
open ($inHandle, "<", $ARGV[0]) or die $^E;
open ($outHandle, ">", "$ARGV[0].mod") or die $^E;
while(my $line = <$inHandle>)
{
        $line =~ s/\<Foo\>(.*)\<\/Foo\>/\<Foo\>$version\<\/Foo\>/;
        $line =~ s/\<Bar\>(.*)\<\/Bar\>/\<Bar\>$revision\<\/Bar\>/;
        print $outHandle $line;
}

close $inHandle;
close $outHandle;

unlink $ARGV[0];
rename "$ARGV[0].mod", $ARGV[0];

不同的是:

$revision =~ s/.*\.//g;

将版本X.X.X.1000变为1000,然后将其用于查找和替换。

可以使用

完成
perl -i.bak  -p -e 's/old/new/g;' *.config

格式?

1 个答案:

答案 0 :(得分:0)

试试这个:

perl -i.bak -pe 's/\d+\.\d+\.\d+\.1000\b/1000/g' *.config