[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