[SP-pm] Dúvidas com o módulo File::Find
"Flávio R. Lopes"
flavio.lopes at links.inf.br
Sat Sep 25 21:08:57 PDT 2010
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" 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" 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 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 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
More information about the SaoPaulo-pm
mailing list