从perl regexp清除只读变量

时间:2014-09-22 13:07:25

标签: regex perl

在Perl regexp中尝试清除只读变量时遇到一些问题。 这是一个示例代码。

while (<$input>) {
    $cap = "";
    $_ =~ s/(.*)"(hello)(.*)"(.*)/$1$2$4/;
    $cap = $2;
    print "$_\n";
    print "captured $cap\n";
}

这是好的,直到它正在阅读的行没有你好。 出于某种原因,即使regexp与任何东西都不匹配,2美元仍然是“你好”。 我尝试使用

$2 = "";

但我得到了

  

尝试修改只读值

有关如何清除变量的任何建议?

1 个答案:

答案 0 :(得分:4)

不是清除变量,而是检查匹配是否成功:

while (<$input>) {
    $cap = "";
    if ($_ =~ s/(.*)"(hello)(.*)"(.*)/$1$2$4/) {
        $cap = $2;
    }
    print "$_\n";
    print "captured $cap\n";
}