[SP-pm] problemas com perl

Solli Honorio shonorio at gmail.com
Mon Jun 13 07:05:29 PDT 2011


Em 12 de junho de 2011 13:02, Blabos de Blebe <blabos em gmail.com> escreveu:

> 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
>
>
Dúvidas da melhor maneira de trabalhar com arquivo (não aborda unicode), dê
uma olhada !
http://sao-paulo.pm.org/artigo/2010/analisedastecnicasparaabrirelerarquivos


> 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
> >
> >
> =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
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110613/77c5e93d/attachment-0001.html>


More information about the SaoPaulo-pm mailing list