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");
}

問題は、値が式に割り当てられる条件が常に真である場合です。問題は文字列として取得されるため、常に true になるようです。同じことができる他の方法、または上記の変数を if 条件内で正常に使用できる状態に戻す方法。

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

1 に答える 1

1

evalを使用して式を評価できます。

my $reg_expression = '(0&&0)||(1&&0)';
print eval $reg_expression, "\n";
于 2012-08-15T12:14:35.707 に答える