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

Alexander Onokhov ccnweb на gmail.com
Ср Дек 25 22:34:22 PST 2013


Это не объясняет, почему во втором вызове примера есть предупреждение:
"Use of uninitialized value within @_ in list assignment",
а в первом вызове нету

Алиас несуществующего значения на несуществующем ключе и в первом и во
втором случае передаётся.

Загадка



2013/12/26 Динар Жамалиев <zhdinar на gmail.com>

> Добрый день.
> Думаю дело обстоит так:
>
> # 1)
> # вызов foo($_{+undef}) генерирует варнинг 'Use of uninitialized value in
> hash element'
> # потому что в массив @_ вносится алиас несуществующего значения
> # 2)
> # команда $_ = $_[0] копирует уже само значение, а его не существует,
> # генерируется варнинг Use of uninitialized value in scalar assignment
> #
> use strict; use warnings;
> foo($_{+undef});
> sub foo { $_ = $_[0] }
>
>
>
> 26 декабря 2013 г., 8:58 пользователь Nikita Zubkov <nikzubkov на gmail.com>написал:
>
> Ключ хэша всегда строка. $bar{undef} это то же самое что и $bar{"undef"}.
>> То же самое касается
>>
>> my $h = { undef => 1 };
>>
>>
>>
>>
>>
>> 26 декабря 2013 г., 6:31 пользователь 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
>>>
>>
>>
>>
>> --
>> Regards,
>> Nikita Zubkov.
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>


-- 
Alexander
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131226/2497d421/attachment.html>


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