[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