搜索模式并替换perl模块文件的整行

时间:2015-04-06 06:59:08

标签: regex perl

我有一个perl模块文件。像这样:

$release_name       = 'Software Release';
$primary_version    = '1';
$secondary_version  = 'R00.0';
$Main_version   = 'R00.0';

我想搜索Main_version并将该行替换为

      $Main_version = R00.1 

当我运行脚本时。 我试过这样的。但它不起作用。

#!/usr/bin/perl -w

use strict;
my $base;
my $file = "/main-dir/work/Myfile.pm";
open(FILE, $file) || die "File not found";
my @base = <FILE>;
close(FILE);
my $item = '$Main_version';
my newitem="R00.1";
foreach $base(@base)
    {
      if($base =~ /$item/){
         $base =~ s/$item/$item='$newitem'/gi;
         print ("Hello, world!\n");
      }
    #else { print $base;}
}
open (BASE, ">$file");
print BASE @base;
close (BASE);

如何搜索和更改perl模块的整行?感谢。

1 个答案:

答案 0 :(得分:1)

如果您使用标准VERSION变量,则可以从perl-reversion获利。

美元符号在正则表达式中是特殊的,它表示&#34;行的结尾&#34;。反斜杠,或使用quotemeta,可以缩写为正则表达式中的\Q

$base =~ /\Q$item/