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

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


On Thursday 05 June 2008 16:18:23 Vladimir V. Perepelitsa wrote:
> 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 (;@) {
>     ;
> }


ну и кстати по хорошему нужно еще сделать чтоб работал
say HANDLE "test";

use IO::Handle ();
BEGIN {
    *IO::Handle::say = sub {
        shift->print( @_ ? join ' ', на _ : $_, "\n" );
    };
}



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


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