[Moscow.pm] Иногда вещи не то , чем кажутся

Vladimir V. Perepelitsa inthrax на gmail.com
Чт Июн 5 05:18:23 PDT 2008


On Thursday 05 June 2008 16:12:13 Denis Evdokimov wrote:
> > join, кстати, лишний. без него все работает:
> > sub say { print @_, "\n"; }
>
> Не совсем лишний, а скорее чуток неправильный
> Вот тут http://perl6.ru/2006/09/ написано
>
> my @array = 1..5;
> say @array.reverse;
> Этот пример напечатает 5 4 3 2 1
>
> Следовательно
> sub say { print join(" ", @_)."\n" }
> а ещё лучше
> sub say
> {
>     local $\ = "\n";
>     print join " ", @_;
> }

почему-то все забывают про то, что прототип у say должен быть (;@)
и есть еще say for qw(x y z);

поэтому:

sub say (;@) {
    local ($\,$,) = ("\n",' ');
    print @_ ? @_ : $_;
}

my @a = qw(x y z);
say @a;
say for @a;
say "test";

ну или можно без local:

sub say (;@) {
    print @_ ? join ' ', на _ : $_, "\n";
}


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


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