[SP-pm] Dúvidas com o módulo File::Find

thiago glauco thiagoglauco at ticursos.net
Sun Sep 26 07:00:53 PDT 2010


Primeiro: A função find retorna todos os "arquivos" dentro do diretório, 
inclusive a referencia para o próprio diretório, o vulgo "."
Segundo: Ela retorna o nome do diretório, e a menos que seu programa 
esteja rodando no mesmo diretório que os arquivos vc precisa do caminho 
completo ao arquivo.

try this:

sub busca {
#
exit if $_ eq ".";
  $gpg->decrypt(
# #ciphertext => "$_.gpg",
  ciphertext => "/home/thiago/teste_cripto/$_",
  output => "/home/thiago/teste_cripto/$_.txt",
  symmetric => 1,
  passphrase => $secret
  );

}

meus 2 centavos.

Marcio Ferreira wrote:
> Na Documentação diz haver um parâmetro( o " |untaint_skip|" ) que faz 
> um skip do diretório, ou se preferir há uma extensão desse módulo que 
> permiti vários tipos de controle, File::Find::Closures - 
> http://search.cpan.org/~bdfoy/File-Find-Closures-1.09/lib/Closures.pm 
> <http://search.cpan.org/%7Ebdfoy/File-Find-Closures-1.09/lib/Closures.pm>
>
> Quanto a descriptografia, é melhor perguntar como ela será realizada ? 
> Talvez seja melhor você passar o(s) arquivo(s) como parâmetro, ou 
> fazer uma consulta ao banco de dados, JSON, enfim.
>
> Nunca testei esse módulo, mas se isso não resolver posta novamente que 
> posso testar.
>
> []s,
>
> @webgenes
> Marcio Ferreira
>
> " Perl  lives as the 'toolbox for Unix' "
>
>
>
> Em 26 de setembro de 2010 01:08, "Flávio R. Lopes" 
> <flavio.lopes em links.inf.br <mailto:flavio.lopes em links.inf.br>> escreveu:
>
>     Olá pessoal.
>     Na verdade estou "requentando" uma dúvida minha sobre um programa
>     que comecei e não terminei.
>
>     Estou tentando fazer 2 programas que tratam de criptografar e
>     descriptografar dados recursivamente dentro de uma árvore de
>     diretórios.
>
>     O código deles está aqui: http://gist.github.com/597573
>
>     No programa "criptografa.pl <http://criptografa.pl>" ele já
>     consegue criptografar dados dos diretórios, mas está acontecendo
>     um problema que ele criptografa o nome dos diretórios inclusive os
>     ocultos. Supondo que eu aponte para um determinado diretório e que
>     dentro dele eu tenha um diretório chamado "dir1" e mais dois
>     arquivos chamados "arquivo1" e "arquivo2" ao rodar o programa e se
>     eu der o comando "ls -al" dentro do tal diretório me aparece o
>     seguinte:
>
>
>     dir1
>     arquivo1
>     arquivo1.gpg
>     arquivo2
>     arquivo2.gpg
>     dir1.gpg --> aqui criptograga o nome do diretorio
>     ..gpg -- > e aqui e no debaixo os diretórios ocultos
>     ..gpg.gpg
>
>     Como faço para o programa "pegar" somente os arquivos para
>     criptografar, ignorando os diretórios ?
>
>
>     Já o programa "descriptografa.pl <http://descriptografa.pl>"
>     ocorre um erro que não consegui descobrir e os arquivos não são
>     descriptografados. Acredito que eu esteja errando alguma coisa ao
>     utilizar o módulo File:Find na passagem de parâmetros.
>     A mensagem de erro é esta:
>
>     Protocol error: expected NEED_PASSPHRASE.* got NODATA
>      at /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 154
>        GnuPG::abort_gnupg('GnuPG=HASH(0xf99b48)', 'Protocol error:
>     expected NEED_PASSPHRASE.* got NODATA\x{a}') called at
>     /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 345
>        GnuPG::send_passphrase('GnuPG=HASH(0xf99b48)', 123456) called
>     at /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 740
>        GnuPG::decrypt_postwrite('GnuPG=HASH(0xf99b48)', 'ciphertext',
>     ., 'output', '..txt', 'symmetric', 1, 'passphrase', 123456, ...)
>     called at /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 725
>        GnuPG::decrypt('GnuPG=HASH(0xf99b48)', 'ciphertext', .,
>     'output', '..txt', 'symmetric', 1, 'passphrase', 123456, ...)
>     called at /home/flavio/workspace/TESTE/decripto_teste.pl
>     <http://decripto_teste.pl> line 34
>        main::busca() called at
>     /usr/local/lib/perl5/5.12.1/File/Find.pm line 854
>        File::Find::_find_dir('HASH(0xf99bd8)',
>     '/home/flavio/teste_cripto', 3) called at
>     /usr/local/lib/perl5/5.12.1/File/Find.pm line 722
>        File::Find::_find_opt('HASH(0xf99bd8)',
>     '/home/flavio/teste_cripto/') called at
>     /usr/local/lib/perl5/5.12.1/File/Find.pm line 1297
>        File::Find::find('CODE(0x11617a8)',
>     '/home/flavio/teste_cripto/') called at
>     /home/flavio/workspace/TESTE/decripto_teste.pl
>     <http://decripto_teste.pl> line 18
>
>
>     Parece que ele não localiza a senha. Mas eu tentei inclusive
>     colocar a senha dentro da sub eliminando a variável $secret. Ou
>     seja, fez desta forma: passphrase => "123456"
>
>     O que está errado?
>
>     Abraço,
>     Flávio
>     _______________________________________________
>     SaoPaulo-pm mailing list
>     SaoPaulo-pm em pm.org <mailto:SaoPaulo-pm em pm.org>
>     http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm



More information about the SaoPaulo-pm mailing list