<br><br><div><span class="gmail_quote">Em 18/02/08, <b class="gmail_sendername">Adriano Ferreira</b> <<a href="mailto:a.r.ferreira@gmail.com">a.r.ferreira@gmail.com</a>> escreveu:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2008/2/18 Patty Silva <<a href="mailto:ptfzs@yahoo.com.br">ptfzs@yahoo.com.br</a>>:<br> ><br> <br>> Ok.. Obrigada pela dica:<br> > .<br> > .<br> > .<br> > .<br> > my @files = grep -M > 2, readdir $dh;<br>
><br> ><br> > closedir $dh;<br> ><br> ><br> > for my $file ( @files ) {<br> > ......<br> > }<br> <br> <br>Bonito código! Duas observações:<br> <br> * por estilo, talvez seja preferível marcar o bloco do 'grep'<br>
explicitamente - o que facilita a manutenção e evolução por outras<br> pessoas (e inclusive por você daqui a uns tempos)<br> <br> grep { -M < 2 } ...<br> <br> * Você pode-se livrar do opendir/readir/closedir através de um glob<br>
<br> my $glob = 'dir/*'<br> my @files = grep { -M > 2 } glob( $glob );</blockquote><div><br><span style="font-family: courier new,monospace;">Só um detalhe, o glob é lento em relação ao opendir/readdir. No Benchmark resultou em uma diferença considerável, veja o código e o resultado.<br>
<br><codigo><br>#!/usr/bin/perl<br>use strict;<br>use Benchmark;<br><br>Benchmark::cmpthese ( -1, {<br> 'Opendir' => 'opendir my $dh, "."; my @f = readdir($dh)',<br> 'Glob' => 'my @f = glob("*")',<br>
}<br>);<br></codigo><br><br><resultado><br> Rate Glob Opendir<br>Glob 2074/s -- -35%<br>Opendir 3195/s 54% --<br></span><span style="font-family: courier new,monospace;"></resultado></span><br style="font-family: courier new,monospace;">
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> # tudo aqui continua como antes<br> for my $file ( @files ) {<br> ......<br>
}<br> <br> Com a vantagem de que este código é mais geral porque o $glob pode<br> incluir vários diretórios e trabalhar diferentes 'patterns' como:<br> my $glob = '{dir1,dir2}/*';<br> my $glob = 'dir/*/*.txt';<br>
<br> e coisas assim.<br> <br> Atenção que o " glob( $glob ) " pode ser substituído pelo operator "<br> <$glob> " mas não é recomendável pela mesma razão do bloco do grep sem<br> as chaves: reduz a ambigüidade (confusão com o operador "readline":<br>
<$fh>) e melhora a legibilidade.<br> <br> Parabéns.<br> <br><br> ><br> > ----- Mensagem original ----<br> > De: Adriano Ferreira <<a href="mailto:a.r.ferreira@gmail.com">a.r.ferreira@gmail.com</a>><br>
> Para: Cascavel Perl Mongers <<a href="mailto:cascavel-pm@pm.org">cascavel-pm@pm.org</a>><br> > Enviadas: Segunda-feira, 18 de Fevereiro de 2008 16:51:24<br> > Assunto: Re: [Cascavel-pm] Listar ultimos arquivos criados<br>
><br> ><br> ><br> > 2008/2/18 Patty Silva <<a href="mailto:ptfzs@yahoo.com.br">ptfzs@yahoo.com.br</a>>:<br> > ><br> > > Pessoal, estou usando o modulo use File::stat para retornar informacoes<br>
> dos<br> > > arquivos..<br> > > porem gostaria de recuperar os arquivos dos ultimos 2 dias??<br> > > o stat me retorna nesse formato:Tue May 24 13:12:58 2005<br> > ><br> > > Alguem poderia me ajudar??<br>
><br> > Eu ia dizer:<br> ><br> > "Show us the code"<br> ><br> > Mas antes, pense nas respostas que você recebe da lista, respostas que<br> > abreviam o problema ao mínimo necessário que no caso é "recuperar os<br>
> arquivos dos ultimos 2 dias". Portanto faça um esforço para expressar<br> > em Perl pelo menos uma aproximação à solução que você quer e então<br> > envie para a lista. Assim mais gente pode ler (porque o problema já<br>
> foi reduzido), e pode concentrar nos pontos de melhora, otimização,<br> > estilo, etc. Você aprende em fazer e aprende ao receber as respostas.<br> ><br> > Dica: o operador -M, a função grep<br> ><br> > > Obrigada<br>
> ><br> > > ________________________________<br> > > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para<br> > > armazenamento!<br> > > _______________________________________________<br>
> > Cascavel-pm mailing list<br> > > <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br> > > <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
> ><br> > _______________________________________________<br> > Cascavel-pm mailing list<br> > <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br> > <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
><br> ><br> ><br> > ________________________________<br> > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para<br> > armazenamento!<br> > _______________________________________________<br>
> Cascavel-pm mailing list<br> > <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br> > <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
><br> _______________________________________________<br> Cascavel-pm mailing list<br> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>"o animal satisfeito dorme". - Guimarães Rosa