[Cascavel-pm] Duvida ao ler arquivo

Luis Motta Campos monsieur_champs em yahoo.com.br
Segunda Abril 24 10:39:53 PDT 2006


Nelson Ferraz wrote:
> Patty Silva wrote:
> 
>>essoal.. eu estou lendo todos os arquivos .TXT de um diretorio.. so
>>que se o arquivo possuir uma variavel eu quero que ele leia o proximo
>>arquivo..
> 
> 
> Patty,
> 
> Você tem duas opções para começar o script: pode deixar o "*.txt" 
> embutido no código ("hard-coded"), ou fazer um script genérico.
> 
> Um script genérico poderia ser executado da seguinte forma:
> 
>    ./script.pl *.txt
> 
> Ou:
> 
>    ./script.pl foo/*.txt
> 
> Ou ainda:
> 
>    ./script.pl bar/*.xyz
> 
> Esta é uma solução melhor, pois permite resolver toda uma classe de 
> problemas, ao invés de um problema em particular.
> 
> E também é muito fácil de implementar, pois a lista de argumentos pode 
> ser lida diretamente de @ARGV:
> 
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> 
> foreach my $filename ( @ARGV ) {
>    print "$filename\n";
> }
> 
> 
> Este é apenas o início da solução: você ainda precisa abrir cada 
> $filename (open) e verificar seu conteúdo (while {...}).

   Isso é ridículo, Nélson.
   O que você precisa fazer é parar de usar globbing para este tipo de 
coisa, e implementar sua funcionalidade de busca de arquivos usando a 
biblioteca File::Find, que é padrão no Perl.

   #!perl
   use strict;
   use warnings;
   use File::Find;

   # Arquivos para processar mais tarde.
   our @FILES;

   sub wanted{
     # Isto testa para saber se o nome do arquivo bate,
     # e o coloca na lista de arquivos para processar.
     /\.txt\z/s && push @FILES, $File::Find::name;
   }

   # Chamada para o File::Find...
   # Aceita diretorios diretamente da linha de comando
   find( \&wanted, @ARGV );

   # Aqui você pode processar os arquivos que interessam.
   # outra sugestão é processar os arquivos dentro da sub wanted().
   # mas isso é ao gosto do fregues.
   __END__

   Putamplexos!
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  Luis Motta Campos is Software Engineer, Oracle OCP/DBA, Un*x
  Sysadmin, Member of {Lisbon,São Paulo,Cascavel,Brasil,London}
  Perl Mongers and Perl Fanatic Evangelist
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

		
_______________________________________________________ 
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz. 
http://br.info.mail.yahoo.com/


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