Code ausführen bovor das Programm mit "die" abgebrochen wird

khom

Grünschnabel
Hallo,

ich habe eine beliebige "normale" Funktion die bei Fehlschlagen mit "die" das Programm abbricht, z.B:
Code:
$dbh = DBI->connect("mysqldatabase", "user", "passwd")
   or die "Connection to database failt...";

Nun möchte ich aber bei Fehlschlagen der Funktion ganz gerne noch ein wenig Code ausführen, z.B. möchte ich eine Logdatei öffnen und die Fehlermeldung dort rein schreiben, zusätzlich aber auch die Fehlermeldung auf dem Bildschirm ausgeben und dann erst mit "die" das Programm abbrechen.
Ich mache das so:
Code:
 $dbh = DBI->connect("mysqldatabase", "user", "passwd") or $error = 1;
if($error) {
   WriteIntoLogfile("Connection to database failt...");
   # weiterer code
   die "Connection to database failt...";
}

nun die Frage: Gibt es eine elegantere oder schönere Lösung das zu machen, vielleicht ohne eine Variable "$error" zu benutzen?
 
Code:
my $dbh = DBI->connect(...) or print_error($DBI::errstr);
$dbh->do($statement) or print_error($dbh->errstr());

sub print_error{
  my ($msg) = @_;
  # mach sonstwas
  print $msg,"\n";
}

Übrigens: Du solltest unbedingt strict verwenden!
 
Danke für die schnelle Hilfe.

Jo, ist natürlich schöner so.
Hätte ich auch selber drauf kommen können, ab so weit denke ich wieder nicht... ;-)
 
Zurück