我不明白这个小的perl代码(如果......)

时间:2014-03-31 16:18:28

标签: perl if-statement

有人能解释一下这个简短的珍珠码?

 $batstr2 = "empty"    if( $status2 & 4 );

if语句怎么说?

4 个答案:

答案 0 :(得分:3)

已经多次回答,如果你不知道什么是Bitwise,那么这里有一个小例子:

perl -e 'print "dec\t     bin\t&4\n";printf "%d\t%8b\t%-8b\n", $_, $_, ($_ & 4) for (0..8);'

打印:

dec      bin    &4
0          0    0       
1          1    0       
2         10    0       
3         11    0       
4        100    100     
5        101    100     
6        110    100     
7        111    100     
8       1000    0     

如您所见,当右边的3rb位为1时,$num & 4为真。

答案 1 :(得分:2)

那是使用if作为语句修饰符。它与

大致相同
if ($status & 4) {
    $batstr2 = "empty";
}

完全相同
($status & 4) and ($batstr2 = "empty");

各种构造可用作语句修饰符,包括:if, unless, while, until, for, when。这些修饰符不能堆叠(foo() if $bar for @baz不起作用),每个简单语句限制一个修饰符。

答案 2 :(得分:1)

这是一个按位而且 - http://perldoc.perl.org/perlop.html#Bitwise-And。 $ status2被用作位掩码,如果该位被设置,它将$ batstr2设置为'empty'。

答案 3 :(得分:0)

如果设置了$ status2的第3个最低有效位,它会将$ batstr2设置为“空” - 它是一个逻辑AND掩码。