将字符串转换为逻辑表达式

时间:2012-08-15 12:05:29

标签: perl

我使用配置文件加载逻辑表达式,稍后将根据成功或失败替换为0或1 构造

expression=(server.ip.1&&server.ip.2)||(server.ip.3&&server.ip.4)

以后server.ip.1将替换为1或0取决于服务器可用性。逻辑表达式评估的后面部分有下面的代码。

my $reg_expression= configurator->get_reg_expression() ;

...
$reg_expression =~ s/$values[0]/$ip_status/g;

if ($reg_expression){
    $logger->debug("no failover");
}else{
    $logger->debug("falling to failover mode");
}

问题是,如果条件始终为true,则为表达式赋值。问题似乎是它被视为字符串所以它总是最终成立。我可以做任何其他方式相同或如何将上面的变量转移回我可以成功使用内部条件的状态。

 $reg_expression = (0&&0)||(1&&0); # diffe
 $reg_expression = '(0&&0)||(1&&0)';

1 个答案:

答案 0 :(得分:1)

can use eval评估表达式:

my $reg_expression = '(0&&0)||(1&&0)';
print eval $reg_expression, "\n";