今天,当我在 perl 中遇到以下行为时,我感到很惊讶:
sub f { die if %{ $_[0] }; 42 }
my %h;
$h{x} ||= f(\%h); # we die. $_[0] references a hash with an 'x' key during f's run-time
相反,给定相同的设置,以下语句的行为不同。
$h{x} = $h{x} || f(\%h); # $h{x} is now 42
分配或与分配和逻辑或的组合之间的这种潜在差异是否记录在某处?
如果这是由于自动激活,是autovivification
模块中的错误或缺失功能似乎无法检测到此特定构造中的自动激活吗?