[SP-pm] Dúvidas com o módulo File::Find
Renato Santos
renato.cron at gmail.com
Sun Sep 26 08:21:02 PDT 2010
Me parece que o Flávio precisa mesmo da primeira opção:
"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""
if (-f $file){
##### do things...
}else{
##### realy need else?
next;
}
2010/9/26 thiago glauco <thiagoglauco at ticursos.net>
> use a segunda forma que eu mandei...
>
> if (not $_ eq "."){
> say $_;
>
> $gpg->decrypt(
> #ciphertext => "$_.gpg",
> ciphertext => "/home/thiago/teste_cripto/$_",
> output => "/home/thiago/teste_cripto/$_.txt",
> symmetric => 1,
> passphrase => $secret
> );
> }
>
>
> "Flávio R. Lopes" wrote:
>
>> 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 at links.inf.br <mailto:flavio.lopes at 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 at pm.org <mailto: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
>>>>
>>>
>>> _______________________________________________
>>> 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
>>
>>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
--
Renato Santos
http://www.renatocron.com/blog/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100926/6cb94dd3/attachment-0001.html>
More information about the SaoPaulo-pm
mailing list