[SP-pm] Novidade Perl 5.10

Luis Motta Campos luismottacampos em yahoo.co.uk
Terça Novembro 20 12:04:26 PST 2007


Lucas Mateus wrote:
> Quando percebi que o valor da chave do %- era uma referencia de matriz 
> cheguei a pensar que essa colocaria na matriz todos as ocorrencias de 
> uma RegExp recursiva, putsss isso seria muito util.

   Você obviamente não faz idéia de como esta operação custa caro, tanto 
em tempo de processamento como em memória... lamentavelmente, mesmo quem 
não se interessa por isso acabaria pagando o preço. Por isso, uma grande 
parte das coisas consideradas "úteis" por determinados grupos de pessoas 
termina por não entrar na máquina de regexps.

   Mas você pode fazer o mesmo efeito com um pouquinho de cógido, assim:

   __PERL__
   my $text = do {
     local $/ = undef;
     open my $fh, '/path/to/file.txt'
       or die $!;
     return <$fh>;
     # nao precisa dizer close($fh)
   };

   my %hash;

   study $text; # opa! uma cerveja para quem souber o que faz isso!

   while ( my ( $campo, $que, $eu, $quero ) =
     $text =~ m{ $REGEXP_AQUI }mxs ){

     # Feio, muito feio! Alguem tem uma ideia melhor?
     map { push @{ $hash{ $_ } }, $$_ }, qw( campo que eu quero );

   }

   undef $text;
   __END__

   ATENCAO: Eu escrevi isso de cabeca, por esporte e por prazer. Peco 
que uma boa alma teste o meu idioma e veja se isso funciona mesmo.

   Eu respondo perguntas para quem tiver problemas para compreender o 
codigo.

   Espero que isso ajude.
   Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}


Mais detalhes sobre a lista de discussão SaoPaulo-pm