2015-04-22 25 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($ _)',因爲它使意圖更加清晰。 –