perl文件测试运算符和“$ _”

时间:2015-04-22 15:52:07

标签: perl

我正在经历O'Reilly的“中级Perl”。 -s用作如下:

print map { "    $_\n" } grep { -s < 1000 } @ARGV;

给出了这个警告:

  

警告:使用没有括号的“-s”是不明确的未终止&lt;&gt;   操作

但是,当我在-s周围加上括号时,它就像一个魅力。 不确定这是与perl版本相关还是作者的错误类型。

  

Perl版本:为darwin-thread-multi-2level构建的v5.18.2

是什么导致了这个问题以及我可以做些什么来纠正它?

1 个答案:

答案 0 :(得分:2)

<可以作为readline / glob短语的开头。

print "[$_]\n" for < a b c >;

<可以作为数值小于运算符的中缀运算符的开头。

print "foo\n" if $x < 3;

-s可以合法地跟随两者,因此Perl在看到<时必须猜测你想要哪一个。使用以下任何一种而不是-s解决了这个问题,因为它们都不能跟着一个术语:

  • -s($_)
  • -s()
  • (-s)