[Cascavel-pm] Res: Perl

Eden Cardim edencardim em gmail.com
Segunda Novembro 27 08:59:09 PST 2006


On 11/27/06, Adriano Ferreira <a.r.ferreira em gmail.com> wrote:
> On 11/27/06, Nelson Ferraz <nferraz em gmail.com> wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Eden Cardim wrote:
> > > "One of the most efficient ways for Perl programmers to bring misery
> > > and suffering upon themselves and their colleagues is to write this:
> > >     open FILE, '<', $filename
> > >         or croak "Can't open '$filename': $OS_ERROR"; "
> >
> > Sei lá... eu ainda acho a forma "canônica" perfeitamente válida:
> >
> >     open (FILE, $filename) or die "Can't read '$filename': $!";
> >
> > Existem outras "best practices" muito mais úteis do que essa, IMO.
>
> De fato! O problema é que globs são globais (bem, isto é uma meia
> verdade, são globais no package em que são declarados). Se o package
> onde o código é escrito é (ab)usado e cada programador adicional
> acrescenta sua programação a ele, vai ser mais fácil esbarrar com
> casos de conflitos.

[tutorial]++

> A questão é que a maioria do código não vai bater com estas limitações
> facilmente e muita gente continua programando feliz com o Perl seu de
> cada dia, ignorante destas questões da programação de sistema
> GRAAANDES.

Pois é, mas quem escreve programas pequenos hoje, pode estar
escrevendo programas grandes amanhã, é bom ir se acostumando.
Principalmente se você for adepto de software livre: o seu código vai
ser manipulado pelo mundo todo, então, qualquer sistema pequeno, nasce
potencialmente graaaande, quando se trata de software livre.

Engraçado que exatamente ontem isso me trouxe 2 horas de sofrimento
até que finalmente descobri que Catalyst e IPC::Cmd, apesar de serem
excelentes, são incompatíveis porque ficam brigando pelo STDOUT. Não
tive outra opção a não ser abrir mão de um deles ou passar mais 2
horas tentando achar um hack pra que funcionassem juntos.

Não custa nada mudar:

open (FILE, $filename) or die "Can't read '$filename': $!";

para

open (my $fh, $filename) or die "Can't read '$filename': $!";

Na verdade, para projetos pequenos eu prefiro

use File::Slurp;
my @file = read_file($filename);

> Já dizia a Audrey, "Quando menos código, melhor." Menos trabalho para
> programar, manter e explicar. Menos oportunidade para coisas darem
> erradas. Pouco código, cada um em seu package é uma boa prática
> também.

[Audrey]++ É exatamente isso que eu acho, e pra quem fala mal da
legibilidade do perl, Kernighan e Pike falam (resumidamente): "Código
legível é código pequeno e objetivo".

Amem!

-- 
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
--
"you seem to think that 'close enough' is close enough...
please learn to be 'literal' around programming."
merlyn - on irc.freenode.net#perl


Mais detalhes sobre a lista de discussão Cascavel-pm