We use Perl scripts to check if condition.
##code(t1) is as belows: my @results=(93,4,0); my @param_array = ( [ "50", "<", "stat1", ], [ "1", "<", "stat2", ], [ "3", "<", "stat3", ], ); for ($i=0;$i<@results;$i++) { print (" ".$results[$i]." ".$param_array[$i][1]." ".$param_array[$i][0]." "); if ( $results[$i] + 0 < $param_array[i][0] + 0 ) { print " beend"; } else { print " end111"; } }
The result is strange. When 95<50, if
condition is not true, and it prints end111
. I think the statement is right.
But when 4 < 1, if
condition is not true, it also prints beend
. I think the the statement is wrong.
Why does this happen?
###result is as below perl t1 93 < 50 end111 4 < 1 beend 0 < 3 beend
fix:
0
You should add use warnings;
to your code, and you should see warning messages like:
Unquoted string "i" may clash with future reserved word Argument "i" isn't numeric in array element
You need to change i
to $i
. Change:
if ( $results[$i] + 0 < $param_array[i][0] + 0 ) {
to:
if ( $results[$i] + 0 < $param_array[$i][0] + 0 ) {
This produces the following output, which I assume is what you want (although you didn't explicitly show your expected output:
93 < 50 end111 4 < 1 beend 0 < 3 beend