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

Renato Santos renato.cron at gmail.com
Sun Sep 26 08:13:21 PDT 2010


Pode usar
-d pra verificar se é diretorios
-f pra verificar se é arquivo
-B (se eu nao me engano) pra verificar se é um arquivo binario

A lista inteira fica aqui:
http://perldoc.perl.org/functions/-X.html

2010/9/26 "Flávio R. Lopes" <flavio.lopes at links.inf.br>

> 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
>



-- 
Renato Santos
http://www.renatocron.com/blog/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100926/b83ff421/attachment-0001.html>


More information about the SaoPaulo-pm mailing list