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

Thiago Glauco Sanchez thiagoglauco at ticursos.net
Tue Jul 13 11:30:55 PDT 2010


Cara... quanoto tempo este módulo GnuPG levou para instalar no seu 
sistema... tá rodando no meu Linux já tem meia hora e ainda não gerou a 
p em rr da chave!

Em 13/07/2010 14:10, Thiago Glauco Sanchez escreveu:
> Flávio, lembra o post que você ontém sobre a variável $_?
> Olha as respostas e  olha o que você fez aqui:
>
> foreach ($_) {  o argumento de foreach é um array, então cada valor do 
> array vai para a variável $_.
>
> foreach $_ (@um_array){} e não foreach($_)...
>
> Em 13/07/2010 14:02, Giuliani Sanches escreveu:
>> 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 em 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 em 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 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
>>>
>>>
>>> -- 
>>> 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 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
>>>
>>
>>
>
>


-- 
What is the sound of Perl? Is it not the sound of a wall that people have
stopped banging their heads against?
—Larry Wall

Thiago Glauco Sanchez
Intrutor Perl e Redes
www.ticursos.net



More information about the SaoPaulo-pm mailing list