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

Динар Жамалиев zhdinar на gmail.com
Ср Дек 25 22:14:48 PST 2013


Добрый день.
Думаю дело обстоит так:

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


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