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

"Flávio R. Lopes" flavio.lopes at links.inf.br
Sun Sep 26 08:09:24 PDT 2010


Olá Thiago!
Desta forma que você passou não funcionou aqui não.

Mas funcionou quando eu alterei:
exit if $_ eq ".";
por
next if $_ eq ".";

Como disse funcionou, mas ainda fica aparecendo aquelas mensagens 
(Somente para descriptografar, pois durante a encriptação está tudo ok).

Outra coisa, se tiver que colocar como abaixo, eu vou deixar de usar a 
funcionalidade do File::Find de "varrer" dentro dos diretórios de forma 
recursiva, certo?:
ciphertext => "/home/flavio/teste_cripto/$_",
output => "/home/flavio/teste_cripto/$_.txt",

Só uma outra coisa:
Como faço no Perl (no caso deste meu programa) para que ele não tente 
criptografar "o diretório, o nome dele", mas somente o que estiver 
"dentro dele".

Algo mais ou menos assim: "Se for arquivo, faça isto, Mas se for 
diretório não faça nada e siga para o próximo"

Não sei se fui claro...

Abraço,
Flávio



Em 26-09-2010 11:00, thiago glauco escreveu:
> 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
>
> _______________________________________________
> 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