[SP-pm] DIE - Módulo Autoritários
Nelson Ferraz
nferraz at gmail.com
Tue Aug 26 11:36:32 PDT 2008
2008/8/26 Lucas Mateus <lucasmateus.oliveira em gmail.com>:
> Praticamente no dia a dia de trabalho nao vejo como desejavel essa
> caracteristica, normalmente esses casos de sinistro so acontece depois da
> aplicaçao testada e homologada e feito deploy, ai vem a surpresa e os
> comentarios: "Perl eh uma bosta mesmo" blz, eu deveria ter dado mais atençao
A aplicação teria dado pau do mesmo jeito, porque você tinha esquecido
de verificar o resultado da função.
O problema não é a linguagem, mas o uso que se faz dela.
> 1) perl -MFile::Path -e 'symlink("teste111", "val222"); mkpath("val222") ||
> print 'OI'.$/'
> 2) perl -e 'symlink("teste111", "val222"); mkdir("val222") || print 'OI'.$/'
>
> Fico com o numero 2
Veja bem: somente agora você lembrou de verificar o resultado do mkdir.
E isso é perfeitamente normal. Quem nunca se esqueceu de verificar o
resultado de um print() para um filehandle, ou de um close(), atire a
primeira pedra! :D
Daí a importância da função lançar o erro, ao invés de esperar que o
programador verifique diligentemente todos os valores retornados.
Por essa razão existe uma pragma chamada "autodie" (Perl 5.10) que
modifica o comportamento padrão do open(), close(), e outras funções
de i/o, para lançarem exceções, ao invés de simplesmente retornar um
valor (que muitas vezes é ignorado).
More information about the SaoPaulo-pm
mailing list