2012-08-15 57 views
1

我使用配置文件加载逻辑表达式,其稍后将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"); 
} 

问题是条件总是为真什么值赋值给表达式。问题似乎是它被视为字符串,所以它总是以真实结束。任何其他方式,我可以做同样的或如何可以传输上面的变量回到状态,如果我可以成功地使用条件。

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

回答

0

can use eval来计算表达式:

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