Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Perl/CGI] connect...or die... - Verhalten von DIE?!

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

ich habe mal folgende Frage zum Verhalten von "die" innerhalb eines Perl-Skripts und würde mich freuen, wenn mir da jemand helfen könnte.

Folgenden Aufruf verwende ich in einem Skript, um Verbindung zu einer Datenbank herzustellen. Das Skript wird über per CGI in einem Webbrowser aufgerufen ("http://localhost/cgi-bin/dbconnect.pl"):

my $dbh = DBI->connect("DBI:$SQL_Driver:$db", $SQL_User, $SQL_Passw) 

or die "Verbindung konnte nicht hergestellt werden: $DBI::errstr\n";

Schlägt nun mal der DB-Aufruf fehl, z.b. falscher Passwort / falscher Benutzer o.ä., schreibt mir der zweite Teil des Aufrufs ("or die") den Text "Verbindung konnte nicht hergestellt werden: " plus Error-String aus "DBI::errstr" in mein Apache-Error-Logfile. Im Browser-Fenster erscheint dann überhaupt keine Ausgabe. "die" schreibt so wie ich weiß nach STDERR und da es über den Webserver aufgerufen wird ist es ja irgendwo logisch und nachvollziehbar, daß es sich um die Webserver-Error-Datei handelt. Meine Frage ist nun: Wäre es möglich die Ausgabe von "die" derart umzubiegen, daß in eine von mir vorgegebene DAtei geschrieben wird?? Folgendes hab ich schon mal probiert, aber damit kam dann nirgendwo mehr ein Hinweis auf einen Fehler an:
close STDERR;

open STDERR,"C:/apache/tmp/errortext.log" or print "Datei nicht vorhanden";
Noch eine Zusatzfrage: Wäre es okay, statt "die" ein "print" zu verwenden, damit im Browser eine Fehlermeldung erscheint, zum Beispiel so:
my $dbh = DBI->connect("DBI:$SQL_Driver:$db", $SQL_User, $SQL_Passw) 

or print "Verbindung konnte nicht hergestellt werden: $DBI::errstr\n";

Oder gäbe es da "galantere" Wege?

Vielen Dank schon mal im Voraus, wenn sich ein "Perl-ianer" meiner annehmen würde! ;)

Viele Grüße und Euch allen noch ein schönes Weihnachtsfest und schon mal einen guten Rutsch ins neue Jahr!!! :)

Flo

  • 2 Wochen später...

Hallo,

ein frohes neues Jahr wünsch ich euch allen!

jetzt zu deinem Problem.

In PHP würde ich das Problem so lösen,... ich denke das kann man auch mit PERL so oder so ähnlich machen

function sqlError($errorNO)

{

$test="hahaha"." ".$errorNO;

echo $test;

// irgendwas in die Datei schreiben

}

$suche="select * from test";

$erg=mysql_query($suche)or die(sqlError('irgendeineNachricht'));

So viel Spaß beim ausprobieren

Mfg

Jhonny ;)

  • Autor

Ui, vielen Dank! :)

Das liest sich beides interessant, insbesondere das Carp-Modul, da in der Beschreibung direkt was von "Redirect Error Messages" steht.

Das werde ich dann mal probieren. :)

Grüsse

Flori

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.