2015-04-22 63 views
1

我正在通过O'Reilly的“中级Perl”。 -s被用作这样:

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

这使得这样的警告:

警告:使用 “-s” 不带括号是暧昧未结束<> 操作

不过,当我把括号放在-s左右,它就像一个魅力。 不知道这是perl版本相关还是作者错误类型。

Perl版本:v5.18.2达尔文线程多2level

是什么原因造成这个问题,我能做些什么来纠正它内置了?

回答

2

<可以作为readline/glob快捷方式的术语的开始。

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

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

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

-s可以合法其次是两个动作,所以Perl有猜测你想要哪一个,当它看到<。使用以下任何替代-s解决的问题,因为没有人可以跟一个术语:

  • -s($_)
  • -s()
  • (-s)
+2

我建议'-S($ _)',因为它使意图更加清晰。 –