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

Denis Ibaev dionys на gmail.com
Чт Дек 26 00:15:01 PST 2013


Так в первом случае тоже передаётся lvalue, мы же можем изменить
значение в хеше изнутри функции. При этом во втором случае будет
создан ключ из пустой строки.

26 декабря 2013 г., 12:04 пользователь Анатолий Гришаев
<0body0 на rambler.ru> написал:
> Во втором случае передается 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