在perl中測試參數驅動的if條件的最佳方法是什麼?例如:如果條件1是if($ str1 eq「abc」)並且條件2是if($ str2 eq「xyz」),並且在運行時做出關於哪個條件需要被檢查的決定,你會怎麼做?Perl根據傳遞的值對條件進行評估
$str1 = $ARGV[0];
$str2 = $ARGV[1];
$cond_value = $ARGV[2];
$cond1 = "$str1 eq \"abc\"";
$cond2 = "$str2 eq \"xyz\"";
if($cond_value == 1) {
$return_val = eval($cond1);
}
else {
$return_val = eval($cond2);
}
似乎不工作?
但我面臨的問題是,它可能並不總是一個「eq」的比較。它可以是<=或任何這樣的操作符。需要將整個條件作爲變量傳遞。 – Chris 2011-03-30 02:59:51
@Chris無論是「eval」還是匿名子,您都可以使用任意條件。然而,如果測試條件不能給定一個固定的接口(即,如果條件可能需要查看程序中的任何變量),那麼'eval'就是要走的路。內置的['sort'函數](http://perldoc.perl.org/functions/sort.html)是一個調整用戶指定條件算法的好例子。 – Andy 2011-03-30 03:33:20