У меня аналогично.

В справке написано

Can't use an undefined value as %s reference

(F) A value used as either a hard reference or a symbolic reference must be a defined value. This helps to delurk some insidious errors.

Хотя в справке по keys:

Starting with Perl 5.14, keys can take a scalar EXPR, which must contain a reference to an unblessed hash or array. The argument will be dereferenced automatically. This aspect of keys is considered highly experimental. The exact behaviour may change in a future version of Perl.

Другими словами это экспериментальная фича.


Denis Ibaev <[email protected]> писал(а) в своём письме Tue, 19 Nov 2013 10:56:05 +0200:

Привет.

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()?

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
[email protected] | http://moscow.pm.org

Ответить