Esiste un modulo Perl che può impedirmi di aggiungere `o morire` a qualsiasi cosa che possa fallire?

StackOverflow https://stackoverflow.com/questions/1432207

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 .

È stato utile?

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 con    autodie cambierà il loro comportamento solo fino alla fine del blocco, file o    eval .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top