[Moscow.pm] Неопределённое значение, но не undef

Анатолий Гришаев 0body0 на rambler.ru
Чт Дек 26 00:04:23 PST 2013



Во втором случае передается lvalue, при обращении к нему и вылетает второе предупреждение.
Можно закомментировать строчку с $val и посмотреть.
А значение одно и тоже undef.

Анатолий Гришаев.

> 26.12.2013, 4:32:27 пользователь Denis Ibaev (dionys на gmail.com) написал:
> 
> Привет.
> 
> Вот такой код
> 
> sub foo { my ($val) = @_; }
> my %bar;
> my $undef;
> 
> foo($bar{undef});
> foo($bar{$undef});
> 
> выдаст на втором вызове функции foo() предупрежд­ения
> 
> Use of uninitialized value $undef in hash element
> Use of uninitialized value within @_ in list assignment
> 
> При этом в первом вызове массив @_ будет содержать один элемент со
> значением undef, точнее алиас для $bar{"undef"}. Во втором же так же
> будет один элемент и как будто undef, но, судя по предупрежд­ению, не
> совсем он. Похоже, что алиас на неопределё­нный элемент %bar. В чём же
> разница этих вызовов и для чего?
> 
> -- 
> Денис Ибаев
> -- 
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
> 
> 


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