2009-09-16 17 views
11

Sto scrivendo codice che esegue tutti i tipi di comandi esterni e vari comandi del filesystem che possono fallire.C'è qualche modulo Perl che può impedirmi di aggiungere `o die` a tutto ciò che può fallire?

C'è qualche modulo che può salvarmi la fatica di aggiungere or die a tutto ciò che può fallire?

mi piacerebbe essere in grado di avvolgere il seguente in qualcosa di così che invece di:

mkdir $dirname or die "can't create directory $dirname"; 

system("some external command") or die "can run some external command"; 

ottengo:

some_wrapper_code { 
    mkdir $dirname; 

    system("some external command"); 
} 

tale che se fallisce mkdir che sarà mi dicono che l'errore si è verificato in mkdir e, se l'errore system non riesce, mi verrà comunicato che l'errore era system.

risposta

32

Sì. Controlla autodie da CPAN.

Dalla documentazione:

Il autodie pragma fornisce un modo conveniente per sostituire le funzioni che normalmente restituiscono
false se fallisce con equivalenti che un'eccezione in caso di fallimento.

Il autodie pragma ha lessicale portata, il che significa che funzioni e subroutine modificati con autodie cambieranno solo il loro comportamento fino alla fine del blocco, file, o eval.

+11

E a partire da Perl 5.10.1, l'autodie è inclusa nel core. http://perldoc.perl.org/perl5101delta.html#New-Modules-and-Pragmata – oylenshpeegul

Problemi correlati