Perl:使用标量或引用作为正则表达式

时间:2014-04-15 15:37:22

标签: perl

是否可以使用标量或参考作为正则表达式? 代码:

 if($packet =~ /(def|rule.*($$wan_int|$$lan_int))/){
    $rule = $1;
   }

产生:不能在/ root / pl / fwlog第121行使用未定义的值作为SCALAR引用,<>第1行。

而不是(有效!): 代码:

if($packet =~ /(def|rule.*(pppoe|re|em|lagg|trunk)\d)/){

$rule = $1;
}

其中$$ lan_int引用" trunk0和$$ wan_int引用" pppoe0" 谢谢

1 个答案:

答案 0 :(得分:4)

听起来更像$ wan_int或$ lan_int未定义。

例如:

use strict;

my $regexp = "hello";
my $ref_regexp = \$regexp;
my $string_to_test = "why hello there";
if ($string_to_test=~ /($$ref_regexp)/) {
        print "Yes $1\n";
}

适用于我并打印

Yes hello