Esiste un modulo Perl che può impedirmi di aggiungere `o morire` a qualsiasi cosa che possa fallire?
-
07-07-2019 - |
Domanda
Sto scrivendo codice che esegue tutti i tipi di comandi esterni e vari comandi del filesystem che possono fallire.
Esiste un modulo che può salvarmi la difficoltà di aggiungere o morire
a qualsiasi cosa che possa fallire?
Mi piacerebbe poter racchiudere quanto segue in qualcosa in modo 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 mkdir
fallisce, mi dirà che l'errore è stato in mkdir
, e se system
fallisce, me lo dirà che l'errore era nel sistema
.
Soluzione
Sì. Scopri autodie
da CPAN.
Dai documenti:
Il pragma
autodie
fornisce un modo conveniente per sostituire le funzioni che normalmente restituiscono
false in caso di errore con equivalenti che generano un'eccezione in caso di errore.Il pragma
autodie
ha ambito lessicale , nel senso che funzioni e subroutine sono alterate conautodie
cambierà il loro comportamento solo fino alla fine del blocco, file oeval
.