QuoteIst das nicht kontra-performant?
Kleine Ergänzung zu pq: Der Code, welcher im eval{} Block geprüft wird, ist bereits compiliert im Hauptspeicher. UNIVERSAL::can legt diesen Code nur um auf eine anonyme Referenz.
Auf diese Art und Weise kannst Du in jeder Methode völlig ungeniert (*G*) mit die() arbeiten und Kontrollstrukturen 'abkürzen'. Beispiel:
http://handwerkzeugs.de/kalender/datediff.html
eine Fehlerbehandlung (unkorrekte Eingabe Datum) erfolgt per die("Fehler: \n") wobei infolge "\n" am Ende der Backtrace unterdrückt wird.
Andere Fehler, für den Entwickler bestimmt, gebe ich mit Carp::croak aus, hierbei wird ein Backtrace nicht unterdrückt.
Und noch einen Schritt weiter:
$SIG{__WARN__} = sub{
die "Warnung: @_";
};
global gesetzt, erhebt jede Warnung in den Status einer Exception und hilft ungemein beim Entwickeln, so wird nichts mehr übersehen und der Blick ins Error_Log erübrigt sich ;)
Viele Grüße,
Rosti