2012-08-15 56 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";