Function 打印(2&;2)有什么问题>&燃气轮机;1.

Function 打印(2&;2)有什么问题>&燃气轮机;1.,function,perl,bit-manipulation,expression,Function,Perl,Bit Manipulation,Expression,我只是想知道那段代码会发生什么。 为什么直接打印时结果不正确,为什么忽略换行符 user@host_09:22 AM:perl 打印2>>1,“\n”; 打印2和2,“\n”; 打印(2和2)>>1,“\n”; 1. 2. 2user@host_09:22 AM:perl $a=(2&2)>>1; 打印“$a\n”; 1. 当您打印带有警告的内容时,它会变得清晰(er) 说 或者,适当地调用print,并用括号括住整件事 perl -we'print((2 & 2) >> 1

我只是想知道那段代码会发生什么。 为什么直接打印时结果不正确,为什么忽略换行符

user@host_09:22 AM:perl
打印2>>1,“\n”;
打印2和2,“\n”;
打印(2和2)>>1,“\n”;
1.
2.
2user@host_09:22 AM:perl
$a=(2&2)>>1;
打印“$a\n”;
1.

当您打印带有警告的内容时,它会变得清晰(er)

或者,适当地调用
print
,并用括号括住整件事

perl -we'print((2 & 2) >> 1, "\n")'
两者都使用
1
打印一行

中提到了这一点,并在和中进行了更全面的记录。有关另一个相关示例,请参见



† 它还警告说,这可能是一个错误——在帕伦斯之前有一个空格;没有空间,就没有警告。

当您打印带有警告的内容时,它会变得清晰(er)

或者,适当地调用
print
,并用括号括住整件事

perl -we'print((2 & 2) >> 1, "\n")'
两者都使用
1
打印一行

中提到了这一点,并在和中进行了更全面的记录。有关另一个相关示例,请参见



† 它还警告说,这可能是一个错误——在帕伦斯之前有一个空格;没有空格,就没有警告。

Perl将括号解释为函数参数标记,您可以用

perl -MO=Deparse,-p -e 'print (2 & 2) >> 1'
输出:

(print(2) >> 1);
标准方法是在左括号前面加一个
+

print +(2 & 2) >> 1

Perl将括号解释为函数参数标记,您可以使用

perl -MO=Deparse,-p -e 'print (2 & 2) >> 1'
输出:

(print(2) >> 1);
标准方法是在左括号前面加一个
+

print +(2 & 2) >> 1

打开警告(
perl-w
)只是为了完整:对于一般情况,您应该使用警告模块(
使用警告;
-Mwarnings
),而不是
-w
,因为
-w
也会影响您无法控制的模块。打开警告(
perl-w
)为了完整起见:对于一般情况,您应该使用警告模块打开警告(
使用警告;
-Mwarnings
),而不是
-w
,因为
-w
也会影响您无法控制的模块。当然,您也可以在参数周围添加括号:
打印((2&2)>>1,“\n”)
@DavidKrupička欢迎:)如果有问题,请告诉我,或者您也可以在参数周围添加括号,当然:
print((2&2)>>1,“\n”)
@DavidKrupička Welcome:)如果出现问题,请告诉我,添加省略的paren更为惯用。但是是的,省略它们的惯用方法是使用一元
+
。值得注意的是,一元
+
可以处理任何类型的值,而不仅仅是数字。它实际上对传递给它的值没有影响。我喜欢-MO=Deparse建议,但如果你不介意的话,我将zdim的帖子标记为答案,因为它稍微更详细。添加省略的paren更惯用。但是是的,省略它们的惯用方法是使用一元
+
。值得注意的是,一元
+
可以处理任何类型的值,而不仅仅是数字。我喜欢-MO=Deparse的建议,但是如果你不介意的话,我把zdim的帖子标记为答案,因为它稍微详细一点。