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

Giuliani Sanches giulianisanches at gmail.com
Tue Jul 13 10:02:01 PDT 2010


Flávio,

troca o seu $diretorios por:

@diretorios = ('meu_diretorio/')

Dentro da sua sub busca, você não precisa fazer um foreach pois a
função find automaticamente percorre o array passado e
disponibilizando o path dentro do callback que você passou, na
variável $_.

[]'s

2010/7/13 "Flávio R. Lopes" <flavio.lopes at links.inf.br>:
> Olá Alexei!
> Ok, vou dar uma lida novamente!
>
> De qualquer forma, abaixo segue o erro:
>
> #############
> Use of uninitialized value $cmd in pattern match (m//) at
> /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 736, <GEN0> line 1.
> Use of uninitialized value $cmd in concatenation (.) or string at
> /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 736, <GEN0> line 1.
> protocol error: expected ENC_TO got :
>  at /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 154
>     GnuPG::abort_gnupg('GnuPG=HASH(0x176b220)', 'protocol error: expected
> ENC_TO got : \x{a}') called at
> /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 736
>     GnuPG::decrypt_postwrite('GnuPG=HASH(0x176b220)', 'ciphertext', ' . ',
> 'output', ' . ', 'recipient', '0D59E2D1', 'passphrase',
> '123-minha-senha-321', ...) called at
> /usr/local/lib/perl5/site_perl/5.12.1/GnuPG.pm line 725
>     GnuPG::decrypt('GnuPG=HASH(0x176b220)', 'ciphertext', ' . ', 'output', '
> . ', 'recipient', '0D59E2D1', 'passphrase', '123-minha-senha-321', ...)
> called at /home/flavio/workspace/Ferramentas/Desemcripta.pl line 23
>     main::busca() called at /usr/local/lib/perl5/5.12.1/File/Find.pm line
> 854
>     File::Find::_find_dir('HASH(0x1781b90)', '/home/flavio/teste_cripto', 5)
> called at /usr/local/lib/perl5/5.12.1/File/Find.pm line 722
>     File::Find::_find_opt('HASH(0x1781b90)', '/home/flavio/teste_cripto')
> called at /usr/local/lib/perl5/5.12.1/File/Find.pm line 1297
> #############
>
> Abraço!
>
> Em 13-07-2010 13:44, Alexei Znamensky escreveu:
>
> Se você não mostra a mensagem de erro, fica bem difícil de alguém te ajudar.
> De cara, apesar de não causar (à primeira vista) um problema na execução,
> você ter um laço do tipo foreach($_) { .. } dentro das suas subs é algo
> desnecessário e indicativo de que você não entende direito o que está
> fazendo.
> Sugiro ler novamente, com mais cudado desta vez, a documentação do
> File::Find.
>
> []s,
> Russian
> 2010/7/13 "Flávio R. Lopes" <flavio.lopes at links.inf.br>
>>
>> Pessoal, ainda não consegui fazer funcionar o programa para
>> descriptografar os arquivos!
>> Alguém poderia me dar uma ajudar?
>>
>> Abraço,
>> Flávio
>>
>> Em 12-07-2010 20:40, "Flávio R. Lopes" escreveu:
>>>
>>> Boa noite pessoal!
>>>
>>> Fiz um programa (Encripta.pl) para encryptar recursivamente os arquivos
>>> que ficam debaixo de uma árvore de um determinado diretório.
>>> E o outro programa para desencriptar (Desencripta.pl) os arquivos que
>>> foram encriptados pelo programa anterior.
>>>
>>> O programa para encriptar está funcionando:
>>>
>>> Encripta.pl:
>>>
>>> #!/usr/bin/perl
>>>
>>> use strict;
>>> use warnings;
>>> use 5.012;
>>>
>>> use File::Find;
>>> use GnuPG qw( :algo );
>>>
>>> my $gpg = new GnuPG();
>>>
>>> my $diretorios = "/home/flavio/teste_cripto"; ## Aqui ainda pretendo
>>> criar um array para "armazenar" uma lista com mais diretórios
>>>
>>>
>>>
>>> my $secret = "123-minha-senha-321"; ## Senha utilizada para criação da
>>> Chave
>>> my $arquivos;
>>>
>>> find( \&busca, $diretorios );
>>>
>>> sub busca {
>>>
>>> foreach ($_) {
>>>
>>> $gpg->encrypt(
>>> plaintext => "$_",
>>> output => "$_.gpg",
>>> armor => 1,
>>> sign => 1,
>>> recipient => "0D59E2D1", ## Minha Chave
>>> passphrase => $secret
>>> );
>>>
>>> # say $_;
>>>
>>> }
>>>
>>> # unlink $_ if /\.gpg$/;
>>>
>>> # print "$arquivos\n" if -f $arquivos;
>>>
>>> }
>>>
>>>
>>> O meu problema é para desencriptar os dados. Eu rodo o programa abaixo
>>> (Desencripta.pl) e dá um erro que não estou conseguindo entender:
>>>
>>> Desencripta.pl:
>>>
>>> #!/usr/bin/perl
>>>
>>> use strict;
>>> use warnings;
>>> use 5.012;
>>>
>>> use File::Find;
>>> use GnuPG qw( :algo );
>>>
>>> my $gpg = new GnuPG();
>>>
>>> my $diretorios = "/home/flavio/teste_cripto";
>>>
>>> my $secret = "123-minha-senha-321";
>>> my $arquivos;
>>>
>>> find( \&busca, $diretorios );
>>>
>>> sub busca {
>>>
>>> foreach ($_) {
>>> $gpg->decrypt(
>>> ciphertext => " $_ ",
>>> output => " $_ ",
>>> recipient => "0D59E2D1",
>>> passphrase => $secret
>>> );
>>>
>>> ## say $_; --> Aqui eu dei um "say" nesta variável para verificar se
>>> realmente estava trazendo os nomes dos arquivos e o
>>> gozado é que é que ela lista todos os arquivos que foram
>>> encriptados, mas mesmo assim dá um erro quando rodo o
>>> programa
>>>
>>>
>>>
>>>  }
>>> }
>>>
>>> O que está errado no meu programa?
>>>
>>> Abraço,
>>> Flávio
>>> _______________________________________________
>>> SaoPaulo-pm mailing list
>>> SaoPaulo-pm at pm.org
>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
> --
> Alexei Znamensky [russoz_gmail_com] [russoz.wordpress.com]
> [www.flickr.com/photos/alexeiz]
> "Though we live in trying times, we're the ones who have to try"
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Giuliani Sanches
twitter.com/giulianisanches
giulianisanches.blogspot.com

Como elaborar uma pergunta:
http://www.istf.com.br/perguntas/


More information about the SaoPaulo-pm mailing list