perl -wle 'print join " ", grep /3/ .. undef(), 1..10'
输出 3 4 5 6 7 8 9 10
Q1
:有比undef
防止失败更好的方法吗?
Q2
:如何强制范围运算符的左侧部分变为无条件true
(即true .. /7/
)?
更新:
perl -wE 'say join " ", grep { ((/7/ .. undef)||1) ==1 } 1..10'
可以用作true .. /7/
替代品。
任何不固定折叠成数字的错误表达式都可以。
perl -wE'say join " ", grep $_==3 .. undef, 1..10'
perl -wE'say join " ", grep $_==3 .. do{0}, 1..10'
perl -wE'say our $FALSE; say join " ", grep $_==3 .. $FALSE, 1..10'
没有触发器。
perl -wE'my $ok; say join " ", grep $ok ||= $_==3, 1..10'
如果您想要布尔值的反义词,请使用否定!
perl -wE'say join " ", grep !($_==8 .. undef), 1..10'
没有触发器。
perl -wE'my $done; say join " ", grep !($done ||= $_==8), 1..10'
好的,所以我更改7
为8
。要实际匹配7
,
perl -wE'my $last; say join " ", grep { my $x = ($_==7 .. undef); !$x || $x == 1 } 1..10'
没有触发器。
perl -wE'my $done; say join " ", grep { my $rv = $done; $done ||= $_==7; !$rv } 1..10'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句