Мне трудно понять, почему работает следующее:
my $array_reference;
foreach $element (@{$array_reference}) {
# some code
}
пока не работает следующее
my $array_reference;
if (scalar (@{$array_reference}) {
# some code here
}
Я понимаю, что perl оживляет (авто-оживляет) неопределенные ссылки. Но я все еще не понимаю, почему последний сегмент кода выдает FATAL.
if
идет послеforeach
, но не наоборот. Я думаю, что это просто неясная (недокументированная?) деталь Perl, но мне любопытно увидеть ответы. - person Nemo   schedule 21.06.2011foreach
для неопределенной ссылки, ссылка больше не будет неопределенной... Таким образом, вы можете успешно вызватьscalar @$reference
для нее. - person Nemo   schedule 21.06.2011