Andrei Fedorov <[email protected]> писал(а) в своём письме Wed, 25 May 2011 22:58:01 +0400:

От: [email protected] [[email protected]] от имени Анатолий Шарифулин [[email protected]]
Отправлено: 25 мая 2011 г. 19:49
Кому: Moscow.pm group
Тема: Re: [Moscow.pm] false

%{$ret||{}} – правильная запись, но лучше писать проще %$ret, зная что в $ret лежит всегда хеш.

Кто сказал, что это правильно?! Такая "правильность" сугубо личное мнение! Если подразумевается, что в $ret могут быть не корректные для обработки данные (undef), то следует также учесть, что $ret может содержаться и скаляр:
Can't use string ("oops") as a HASH ref while "strict refs"

Почему нельзя просто проверить ref переменной $ret на значение HASH, и в зависимости от требований сделать next, return или $ret = {}.

sub is_hash ($) { UNIVERSAL::isa( $_[0], 'HASH' ) }
sub is_hash_size ($) { is_hash( $_[0] ) and %{ $_[0] } }

next unless is_hash_size $ref;
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить