perl에서 if 조건을 테스트하는 가장 좋은 방법은 무엇입니까?전달 된 값을 기반으로 한 Perl 평가 조건
예를 들어, 조건 1이 ($ str1 eq "abc")이고 조건 2가 ($ str2 eq "xyz") 인 경우 런타임에 점검해야 할 조건을 결정할 때, 어떻게 할거 니?
$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
@Chris'eval' 또는 익명의 subs를 사용하면 임의의 조건을 사용할 수 있습니다. 그러나 테스트 조건에 고정 인터페이스를 부여 할 수없는 경우 (즉, 프로그램에서 변수를 볼 필요가있는 경우) 'eval'이 필요합니다. 내장 된 ['sort' 함수] (http://perldoc.perl.org/functions/sort.html)는 사용자가 지정한 조건으로 알고리즘을 조정하는 좋은 예입니다. – Andy