在Perl regexp中尝试清除只读变量时遇到一些问题。 这是一个示例代码。
while (<$input>) {
$cap = "";
$_ =~ s/(.*)"(hello)(.*)"(.*)/$1$2$4/;
$cap = $2;
print "$_\n";
print "captured $cap\n";
}
这是好的,直到它正在阅读的行没有你好。 出于某种原因,即使regexp与任何东西都不匹配,2美元仍然是“你好”。 我尝试使用
$2 = "";
但我得到了
尝试修改只读值
有关如何清除变量的任何建议?
答案 0 :(得分:4)
不是清除变量,而是检查匹配是否成功:
while (<$input>) {
$cap = "";
if ($_ =~ s/(.*)"(hello)(.*)"(.*)/$1$2$4/) {
$cap = $2;
}
print "$_\n";
print "captured $cap\n";
}