是否可以使用标量或参考作为正则表达式? 代码:
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" 谢谢
答案 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