我有一个像这样的awk代码:
val = and($1, 0x03FFFFFF) + $2
Run Code Online (Sandbox Code Playgroud)
我写了这样的Perl版本:
$val = ($1 && 0x03FFFFFF) + $2;
Run Code Online (Sandbox Code Playgroud)
这条线是一样的吗?
不完全 - 你想要一个&,而不是&&:
$val = ($1 & 0x03FFFFFF) + $2;
Run Code Online (Sandbox Code Playgroud)
请注意,您是正确的,因为优先需要括号
更详细:
你的awk表达式使用的and()是gawk manual的ch中定义的." 8.1.6 gawk的位操作功能 "因此:
和(v1,v2)=======返回v1和v2提供的值的按位AND.
因此,在Perl中你想要一个按位"和" ; 不是合乎逻辑的,根据perldoc perlop是一个单&符:" &"