[Moscow.pm] keys() и разыменование undef

Ilya Chesnokov chesnokov.ilya на gmail.com
Вт Ноя 19 02:19:13 PST 2013


2013/11/19 Denis Ibaev <dionys на gmail.com>

> Привет.
>
> > perl -E 'use strictures; my $v; say(%$v);'
> Can't use an undefined value as a HASH reference at -e line 1.
>
> > perl -E 'use strictures; my $v; say(keys(%$v), "ok");'
> ok
>
> Почему разыменование переменной со значением undef в хеш не вызывает
> ошибки с случае keys() и values()?
>
>
Видимо, keys и пр. автовивифицируют $v:

perl -Mstrict -E 'my $v; say "keys: ", keys %$v; say "v: ", $v'
keys:
v: HASH(0x96bde8)



> perl -v
> This is perl 5, version 14, subversion 2 (v5.14.2) built for
> x86_64-linux-gnu-thread-multi
>
> --
> Денис Ибаев
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards,
Ilya Chesnokov
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131119/316de1fa/attachment.html>


Подробная информация о списке рассылки Moscow-pm