[Moscow.pm] Who - Vacancy

Oleg Alexeenkov proler на gmail.com
Ср Апр 29 04:57:49 PDT 2009


Здравствуйте, Andrew.

Вы писали 29 апреля 2009 г., 15:37:31:

>> А меня в последнее время прет
>> print qq{ <head> { wow <title>$MyTitle</title> @{[ do{ 1+3 }]}  zzz }
>> </head> };

> Самый необычный и интересный "шаблонизатор" - это Template::Declare:

template simple =>> sub {
>         html {
>             head {}
>             body {
>                 p {'Hello, world wide web!'}
>             }
>         }
>     };

о! а идея причесать хешами, а то не все работает если так-

use strict;
our $AUTOLOAD;

sub tag (@) {
  my $t = shift;
  my $p = shift if ref $_[0] eq 'HASH';
  return "<$t" . ( join ' ', map { qq{ $_="$p->{$_}"} } keys %$p ) . ">" . join( '', @_ ) . "</$t>";
}

sub UNIVERSAL::AUTOLOAD {
  local $_ = $UNIVERSAL::AUTOLOAD;
  s/(.*):://;
  #print "[[$UNIVERSAL::AUTOLOAD];<$_> \@_= ".join(':', на _)."]\n"; #debug
  return tag $_, tag shift, @_ if $1 and $1 eq $_[0];
  return tag $_, @_;
}
print html( body( a( { href => 'http://perl.org' }, h1('ruby sux') ) ) ), "\n";    #ok
#print html body a {'href' => 'http://perl.org' }, h1 ('ruby sux'), "\n"; #wrong
print html body a( { href => 'http://perl.org' }, h1('ruby sux') );
print "\n";                                                                        #ok
#print html body a ({href => 'http://perl.org' }, h1 'ruby sux'); print"\n"; #error
print html('in'), "\n";                                                            #ok
#print html 'sux', body('in'), "\n"; #empty
print html body h1('sux'), a( { href => 'shit' }, 'ruby' ), p( h2('z') );          #ok
#print html body h1({z=>2},'ruby sux'), a 'text'; #err




-- 
С уважением,
 Oleg                          mailto:proler на gmail.com



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