[SP-pm] Novidade Perl 5.10

Solli Honorio shonorio em gmail.com
Quarta Novembro 21 09:58:46 PST 2007


On Nov 21, 2007 3:17 PM, Luis Motta Campos <luismottacampos em yahoo.co.uk>
wrote:

> 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

Hoje de manhã, durante o meu banho matinal, eu pensei nisto, mas pensei no
array para facilitar o loop abaixo ... e com certeza o hash não era a melhor
opcão ...

>
>
> 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.

... até pensei que fosse isto, mas no meu teste não consegui pegar nada com
esta variável... e além do mais você já não está pegando o valor da a
escalar com '$_' ? Então, eu não entendi bem este ponto, pode explicar mais
?

>
>
> > 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.

Brasil tá crescendo cara, agora vc pode comprar Guinness, Newcastle e outra
no supermercado.... sem contar que tem um monte de bares com elas agoras
....

>
>
>  Putamplexos!
> --
> Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
> Perl fanatic evangelist, and amateur {cook, photographer}
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>


-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20071121/705ae3cc/attachment.html 


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