gpt4 book ai didi

取消引用未定义的数组引用时的 Perl 激活问题

转载 作者:行者123 更新时间:2023-12-03 14:48:29 26 4
gpt4 key购买 nike

我很难理解为什么以下工作:

my $array_reference;
foreach $element (@{$array_reference}) {
# some code
}

虽然以下不起作用
my $array_reference;
if (scalar (@{$array_reference}) {
# some code here
}

我知道 perl 使 undefined reference 栩栩如生(自动激活)。但是我仍然很困惑为什么后面的代码段会抛出 FATAL。

最佳答案

在左值上下文中取消引用 autovivify(意味着当需要可修改的值时),并且 foreach 创建一个左值上下文。

>perl -E"$$x = 1;  say $x;"
SCALAR(0x74b024)

>perl -E"++$$x; say $x;"
SCALAR(0x2eb024)

>perl -E"\$$x; say $x;"
SCALAR(0x30b024)

>perl -E"sub {}->($$x); say $x;"
SCALAR(0x27b03c)

>perl -E"for ($$x) {} say $x;"
SCALAR(0x25b03c)

最后两个创建一个左值上下文,因为它们需要一个值作为别名 $_[0]$_ (分别)。

关于取消引用未定义的数组引用时的 Perl 激活问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419618/

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