写"@ARGV ||= '.';"有什么问题?

  • 本文关键字:问题 @ARGV perl
  • 更新时间 :
  • 英文 :


为什么Perl对下面的代码片段抛出一个错误?

$ perl -Mstrict -wE '@ARGV ||= ".";'
Can't modify array dereference in logical or assignment (||=) at -e line 1, near "'.';"
Execution of -e aborted due to compilation errors.

而它愉快地处理

$ perl -Mstrict -wE '@ARGV = @ARGV || ".";'

我看不出perldiag的解释在这里有多大帮助:

(F)你不允许分配给指定的项目,或其他请尝试更改它,例如使用自动增量。


代码@ARGV不可能同时返回数组本身和其中的元素数量,因此@ARGV ||= '.';没有意义。您需要计算@ARGV两次,一次在标量上下文中(获得元素的数量),一次作为左值(获得数组本身)。

 @ARGV = @ARGV || '.';

最新更新