[SP-pm] problemas com perl

Blabos de Blebe blabos at gmail.com
Sun Jun 12 09:02:11 PDT 2011


Lázaro, vamos por partes,

Eu não consegui reproduzir o seu problema aqui, mas como vc mandou o
script eu vou fazer alguams crífticas construtivas que poderão te
salvar de muitas dores de cabeça no futuro, ou presente, sei lá

1) Nunca, nunca mesmo faça qualquer código sem começar com as linhas:

use strict;
use warnings;

Se possível pode trocá-las por:

use Modern::Perl;

Como diz o manual, "strict - Perl pragma to restrict unsafe
constructs", ou seja, vai restringir o uso de construc'ões inseguras.

http://perldoc.perl.org/strict.html
http://perldoc.perl.org/warnings.html

2) Na forma que você utilizou, não vejo tanto problema, mas executar
qualquer comando externo, passando comandos e caracteres especiais pro
shell (>) quase sempre abre uma brecha monstruosa de segurança.
Prefira utilizar módulos que fazem isso pra vc, te poupando de se
preocupar com os detalhes chatos, tipo o IPC::Open3

http://search.cpan.org/perldoc?IPC::Open3

3) Jamais utilize open com 2 argumentos. Isso também pode adicionar
uma falha de segurança de proporções épicas. O comando open por razões
históricas também pode ser utilizado para comunicação iterprocessos, o
que pode ser um efeito colateral indesejado na maioria dos casos.

http://perldoc.perl.org/functions/open.html

4) Nunca permita que uma entrada de usuário vá diretamente para algum
comando, principalmente open, como nas linhas:

while($nome=<IN>){
	open EST,"<$dirin\\$nome";

Uma linha vianda de um arquivo, também conta como "entrada de usuário".

5) Use CPAN

Por exemplo você poderia ter utilizado os módulos para tratamento de
CSV por exemplo, pra manipular os seus arquivo, como o Text::CSV.

...

No mais, fique esperto com arquivos textos que vc leva de um sistema
pra outro, porque além dos encodings (que o stan pode te ajudar), tem
problemas com terminadores de linha, os famosos \n, \r\n, \n\r,
blablabla.

No mais, sempre que precisar, faça como fez, mande o trecho de código
e exemplos. Códigos grandes ficam melhores num pastebin da vida.

[]'s

2011/6/10 Oscar Marques <oscarbm em gmail.com>:
> <off>
> Bolivia?
> Que parada é aquela la?
> Morei anos por la.
> Até.
> </off>
>
> 2011/6/10 Renato Santos <renato.cron em gmail.com>
>>
>> Só um dica,
>> este arquivo está [provavelmente] em UTF16:
>> $ file /home/renato/Downloads/alalay_1971.txt
>> /home/renato/Downloads/alalay_1971.txt: Little-endian UTF-16 Unicode text,
>> with CRLF, CR line terminators
>> então você pode tentar fazer isto:
>>
>> open IN, '<:encoding(utf-16)' , "arquivos.dat";							# IN = arquivos.dat
>>
>>
>> 2011/6/10 Solli Honorio <shonorio em gmail.com>
>>>
>>> Lázaro,
>>> Eu acho que o teu problema é com unicode, dê uma
>>> olhada http://sao-paulo.pm.org/equinocio/2011/mar/4 e vê se isto resolve o
>>> teu problema.
>>> Solli M. Honório
>>>
>>> 2011/6/10 José Lázaro Siqueira Júnior <juniortaub em hotmail.com>
>>>>
>>>> Utilizo o windows vista e estou com problemas na leitura de um arquivo
>>>> ascii, pois, entre os caracteres de cada variavel, o perl esta sendo
>>>> atribuindo automaticamente um espaço. Por exemplo:
>>>>
>>>> DATOS DE : TEMPERATURA MEDIA AMBIENTE DIARIA (ºC) (AÑO: 1971)
>>>>
>>>> D A T O S  D E : T E M P E R A T U R A   M E D I A   A M B I E N T E   D
>>>> I A R I A  ( º C )  ( A Ñ O :  1 9 7 1 )
>>>>
>>>> O estranho é que já rodei o mesmo script sem problemas p/ outras bases
>>>> de dados, que seguem o mesmo padrão dos arquivos de entrada(anexo), porém,
>>>> com estes dados não obtive sucesso.
>>>>
>>>> Segue anexo os dados de entrada e o script perl.
>>>>
>>>> Obrigado,
>>>>
>>>> Lázaro
>>>>
>>>> =begin disclaimer
>>>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> =end disclaimer
>>>>
>>>
>>>
>>>
>>> --
>>> "o animal satisfeito dorme". - Guimarães Rosa
>>>
>>> =begin disclaimer
>>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>>
>>
>> --
>> Renato Santos
>> http://www.renatocron.com/blog/
>>
>> =begin disclaimer
>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>
>
>
> --
> Oscar Marques
> oscarbm em gmail.com
> http://www.dunkelheit.com.br
> @f117usbr
> +55 21 9293-9343
>
> ------------------------------------
> Participe do I Hack'n Rio
> ------------------------------------
>
>
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


More information about the SaoPaulo-pm mailing list