[Moscow.pm] Странности и неожиданности Perl

Vladimir V. Perepelitsa inthrax на gmail.com
Чт Фев 28 22:54:58 PST 2008


Хотите скалярный контекст в списковом? укажите это явно

В случае использования как значения хеша чужих функций я использую
a => scalar aa,

сам я при написании кода всегда использую return без аргументов в void 
функциях/методах а также в приведенном случае, с return if.
возврат из функции как return if будет более правильным, нежели return undef. 
(return undef будет true в списковом контексте)

более правильно будет сделать так:

sub _ {
  croak "Not a scalar context for ..." if wantarray;
  ...
  return if $bad;
  return 'something';
}

On Thursday 28 February 2008 13:53, Andrew Fedorov wrote:
> use Data::Dumper;
>
> sub aa {
>     my $bad_day = 1;
>     return if $bad_day;
>     return 'bla-bla-bla';
> }
>
> my $test = {
>     a => aa,
>     b => 1,
> };
>
> print Dumper($test);
>
> =====================
> $VAR1 = {
>           '1' => undef,
>           'a' => 'b'
>         };
> =====================
> Очень многие используют return if/unless для выхода и вот к чему это может
> привести. Особенно следует учитывать при использовании чужих библиотек :)
> ______________________________________________________________________
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
> http://mail.pm.org/mailman/listinfo/moscow-pm

-- 
Vladimir Perepelitsa aka Mons Anderson
<inthrax на gmail.com> / #99779956


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