[SP-pm] Novidade Perl 5.10

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Novembro 21 09:17:14 PST 2007


Solli Honorio wrote:
> Hummm posso tentar entender o quê rola neste código ...

:)

>> __PERL__
>> 
> ... bom, aqui você coloca todo o conteúdo de um arquivo na variável, 
> pouco recomendável para arquivos grandes, no meu teste o 'return
> <$fh>;' retornava uma mensagem de erro, deixei apenas o <$fh> e
> funcionou, acho que o Damian Conway não aprovaria esta parte do
> código ...

:) sem comentarios...
Desculpe pelo bug do return(), o Otavio me chamou a atencao para isso no
MSN hoje de manha...

>> my $text = do { local $/ = undef; open my $fh, '/path/to/file.txt' 
>> or die $!; <$fh>; # nao precisa dizer close($fh) };
>> 
>> my %hash;
>> 
>> study $text; # opa! uma cerveja para quem souber o que faz isso!
>> 
> ... você esta ficando famoso em apostar cerveja e não pagar, será que
>  teremos que ir à Europa cobrar ?!?!

  :D Solli, eu jah disse que voce eh bem vindo, eu tenho quarto de
hospedes. Vem, traz a tua mulher, a sogra, o cachorro e o gatinho.

> Pelo o quê eu compreendi na documentação, aqui você pede para o
> engine do regex avaliar a possibilidade de criar um índice com os
> matches desejado, que poderá resultar em ganho de performance. Eu não
> conhecia este cara, mas me parece que isto poderia melhorar bastante
> o desempenho de parse dos meus longos arquivos de logs, carregando
> blocos do log e efetuando o parse como vc está mostrando aqui ...

Essa eh a ideia. :)

>> while ( my ( $campo, $que, $eu, $quero ) =
>> 
> ... aqui eu acho que ficaria melhor receber num array 'while ( my 
> @campos_que_eu_quero = ' ...

Nao, por que o array nao ajuda a documentacao. Eu quero saber o que eh
cada coisa, entao tenho de usar variaveis, ou um hash-slice. Entre
variaveis e um hash-slice assim

my $hash;
while( @{ $hash }{ qw( campos que eu quero ) } ) { # ...

eu achei mais didatico usar as variaveis... :)

>> $text =~ m{ $REGEXP_AQUI }mxs ){
>> 
>> # Feio, muito feio! Alguem tem uma ideia melhor?
>> 
> ... com certeza, como pode um 'santo' escrever coisas deste tipo ?
> Mas antes me explica uma coisa, o que é '$$_'?

Se eu escrever ${$_} voce compreende que eu estou usando o nome em $_
como o nome de um escalar, e pegando o valor dele? Pois eh, eh isso.

> Uma melhor alternativa seria
>
> for (@campos_que_eu_quero) { push @{ $hash{ $_ } }, $$_ } }

OK, ok, por este map() o Damian Conway ia me xingar... ;)

>> map { push @{ $hash{ $_ } }, $$_ }, qw( campo que eu quero );
>> 
>> }
>> 
>> undef $text; __END__

  Solli, a cerveja (mais uma) eh tua, meu caro...

  Se voce tiver mais perguntas, por favor...

  E eu vou pagar as minhas dividas mais para o meio do ano, precisa
apenas encontrar outro boteco que tenha guinness, mas nao deve ser assim
tao complicado. Eu acho que a gente nunca foi no Finnegan's, que foi uma
sugestao muito velha do Nelson Ferraz... acho que pode ser a oportunidade.

  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