最近,我遇到了这种方法,用于过滤列表的第二个值:
perl -E 'say grep --$|, 1..10'
13579
它是如何工作的?
最佳答案
$|
是一个特殊的Perl变量,只能具有值0和1。
对$|
的任何非真值赋值,例如
$ | = 1;
$ | ='foo';
$ | =“4asdf”; #0 +“4asdf”为4
$ | = \ @a;
将$|
设置为1的效果。任何错误的零值赋值
$ | = 0;
$ | =“”;
$ | = undef;
$ | =“erk”; #0 +“erk”为0
将$|
设置为0。
将--$|
扩展为$| = $| - 1
,现在您可以看到发生了什么。
如果$|
最初为1,则--$|
会将值更改为0。
如果$|
最初为0,则--$|
会尝试将值设置为-1,但实际上会将值设置为1。
关于perl - -$ |在Perl工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4959230/