我正在经历O'Reilly的“中级Perl”。 -s
用作如下:
print map { " $_\n" } grep { -s < 1000 } @ARGV;
给出了这个警告:
警告:使用没有括号的“-s”是不明确的未终止&lt;&gt; 操作
但是,当我在-s
周围加上括号时,它就像一个魅力。
不确定这是与perl版本相关还是作者的错误类型。
Perl版本:为darwin-thread-multi-2level构建的v5.18.2
是什么导致了这个问题以及我可以做些什么来纠正它?
答案 0 :(得分:2)
<
可以作为readline
/ glob
短语的开头。
print "[$_]\n" for < a b c >;
<
可以作为数值小于运算符的中缀运算符的开头。
print "foo\n" if $x < 3;
-s
可以合法地跟随两者,因此Perl在看到<
时必须猜测你想要哪一个。使用以下任何一种而不是-s
解决了这个问题,因为它们都不能跟着一个术语:
-s($_)
-s()
(-s)