gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:33:02 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why doesn't ||= work with arrays?

(2 个回答)


8年前关闭。




为什么 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 解释在这里很有帮助:

Can't modify %s in %s

(F) You aren't allowed to assign to the item indicated, or otherwise try to change it, such as with an auto-increment.



非常感谢对这种行为的更人性化的解释。

最佳答案

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

 @ARGV = @ARGV || '.';

关于perl - 写 "@ARGV ||= ' .';"有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com