[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