【发布时间】:2015-07-02 06:46:15
【问题描述】:
我一直在查看有关 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
格式?
【问题讨论】:
-
看起来你在摆弄 XML。是吗?如果是这样,可能有一个
XML::Twig一个班轮。
标签: perl