<br><br><div class="gmail_quote">On Nov 21, 2007 3:17 PM, Luis Motta Campos &lt;<a href="mailto:luismottacampos@yahoo.co.uk">luismottacampos@yahoo.co.uk</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Solli Honorio wrote:<br>&gt; Hummm posso tentar entender o quê rola neste código ...<br><br>:)<br><br>&gt;&gt; __PERL__<br>&gt;&gt;<br>&gt; ... bom, aqui você coloca todo o conteúdo de um arquivo na variável,
<br>&gt; pouco recomendável para arquivos grandes, no meu teste o &#39;return<br>&gt; &lt;$fh&gt;;&#39; retornava uma mensagem de erro, deixei apenas o &lt;$fh&gt; e<br>&gt; funcionou, acho que o Damian Conway não aprovaria esta parte do
<br>&gt; código ...<br><br></div>:) sem comentarios...<br>Desculpe pelo bug do return(), o Otavio me chamou a atencao para isso no<br>MSN hoje de manha...<br><div class="Ih2E3d"><br>&gt;&gt; my $text = do { local $/ = undef; open my $fh, &#39;/path/to/file.txt&#39;
<br></div>&gt;&gt; or die $!; &lt;$fh&gt;; # nao precisa dizer close($fh) };<br><div class="Ih2E3d">&gt;&gt;<br>&gt;&gt; my %hash;<br>&gt;&gt;<br>&gt;&gt; study $text; # opa! uma cerveja para quem souber o que faz isso!<br>
&gt;&gt;<br>&gt; ... você esta ficando famoso em apostar cerveja e não pagar, será que<br>&gt; &nbsp;teremos que ir à Europa cobrar ?!?!<br><br></div> &nbsp;:D Solli, eu jah disse que voce eh bem vindo, eu tenho quarto de<br>hospedes. Vem, traz a tua mulher, a sogra, o cachorro e o gatinho.
<br><div class="Ih2E3d"><br>&gt; Pelo o quê eu compreendi na documentação, aqui você pede para o<br>&gt; engine do regex avaliar a possibilidade de criar um índice com os<br>&gt; matches desejado, que poderá resultar em ganho de performance. Eu não
<br>&gt; conhecia este cara, mas me parece que isto poderia melhorar bastante<br>&gt; o desempenho de parse dos meus longos arquivos de logs, carregando<br>&gt; blocos do log e efetuando o parse como vc está mostrando aqui ...
<br><br></div>Essa eh a ideia. :)<br><div class="Ih2E3d"><br>&gt;&gt; while ( my ( $campo, $que, $eu, $quero ) =<br>&gt;&gt;<br>&gt; ... aqui eu acho que ficaria melhor receber num array &#39;while ( my<br>&gt; @campos_que_eu_quero = &#39; ...
<br><br></div>Nao, por que o array nao ajuda a documentacao. Eu quero saber o que eh<br>cada coisa, entao tenho de usar variaveis, ou um hash-slice. Entre<br>variaveis e um hash-slice assim</blockquote><div style="font-family: courier new,monospace;">
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 ...<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br>my $hash;<br>while( @{ $hash }{ qw( campos que eu quero ) } ) { # ...<br><br>eu achei mais didatico usar as variaveis... :)<br><div class="Ih2E3d"><br>&gt;&gt; $text =~ m{ $REGEXP_AQUI }mxs ){<br>&gt;&gt;<br>&gt;&gt; # Feio, muito feio! Alguem tem uma ideia melhor?
<br>&gt;&gt;<br>&gt; ... com certeza, como pode um &#39;santo&#39; escrever coisas deste tipo ?<br>&gt; Mas antes me explica uma coisa, o que é &#39;$$_&#39;?<br><br></div>Se eu escrever ${$_} voce compreende que eu estou usando o nome em $_
<br>como o nome de um escalar, e pegando o valor dele? Pois eh, eh isso.</blockquote><div><span style="font-family: courier new,monospace;">... 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 &#39;$_&#39; ? Então, eu não entendi bem este ponto, pode explicar mais ?
</span><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><div class="Ih2E3d"><br>&gt; Uma melhor alternativa seria<br>&gt;<br>&gt; for (@campos_que_eu_quero) { push @{ $hash{ $_ } }, $$_ } }
<br><br></div>OK, ok, por este map() o Damian Conway ia me xingar... ;)<br><div class="Ih2E3d"><br>&gt;&gt; map { push @{ $hash{ $_ } }, $$_ }, qw( campo que eu quero );<br>&gt;&gt;<br>&gt;&gt; }<br>&gt;&gt;<br>&gt;&gt; undef $text; __END__
<br><br></div> &nbsp;Solli, a cerveja (mais uma) eh tua, meu caro...<br><br> &nbsp;Se voce tiver mais perguntas, por favor...<br><br> &nbsp;E eu vou pagar as minhas dividas mais para o meio do ano, precisa<br>apenas encontrar outro boteco que tenha guinness, mas nao deve ser assim
<br>tao complicado. Eu acho que a gente nunca foi no Finnegan&#39;s, que foi uma<br>sugestao muito velha do Nelson Ferraz... acho que pode ser a oportunidade.</blockquote><div style="font-family: courier new,monospace;">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 ....
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><div><div></div><div class="Wj3C7c"><br> &nbsp;Putamplexos!<br>--<br>Luis Motta Campos (
a.k.a. Monsieur Champs) is a software engineer,<br>Perl fanatic evangelist, and amateur {cook, photographer}<br><br>_______________________________________________<br>SaoPaulo-pm mailing list<br><a href="mailto:SaoPaulo-pm@pm.org">
SaoPaulo-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br><br></div></div></blockquote></div><br><br clear="all"><br>-- <br>
&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa