[Perl] warningToBrowser im Browser auch wirklich anzeigen?

Dr Dau

ich wisch hier durch
Hallo!

Wie kann ich die Warnungen auch wirklich im Browser anzeigen lassen, anstatt dass sie lediglich im HTML-Quelltext als Kommentarzeile "versteckt" werden?

Und gibt es noch andere Fehlermeldungen die man sich anzeigen lassen kann?

Bisher habe ich dieses:
Perl:
#!/usr/bin/perl -w

use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

print "Content-type: text/html\n\n";

warningsToBrowser(1);

# restlicher Code
Lediglich fatalsToBrowser funktioniert schon zu meiner Zufriedenheit..... nützt mir nur nicht viel. :(

Gruss Dr Dau
 
CGI::Carp sieht nicht vor, dass man sich Warnungen direkt anzeigen lassen kann. Da müsstest Du Dir einen eigenen Signal-Handler schreiben.
 
Das sagst Du grad dem richtigen.....
Hmm, dass ist übel..... da ich es (von PHP) gewohnt bin dass mir die Fehler auch im Browser angezeigt werden, werde ich wohl eher durch zufall über Fehler stolpern. :(

Aber gibt es denn noch andere Fehlermeldungen oder sind die beiden schon alle?
 
Warnung != Fehler

Fehler bekommst Du ja im Browser angezeigt. Warnungen sind (meist) nicht Funktionsrelevant (heißt, sie beeinträchtigen häufig nicht die Funktionalität).

Mit eigenem Handler würde es ungefähr so aussehen:
Code:
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

print CGI::header();

$SIG{__WARN__} = \&warnings;

my $var;
my $number = $var + 12;
print $number;


sub warnings{
    print '<b>Warnung: '. join("",@_) .'</b>';
}
 
So, ich bin jetzt endlich mal zum testen gekommen. ;)

Also, vom Prinzip funktioniert Dein Code.
Wenn ich ihn aber nun z.b. so änder:
Code:
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

print CGI::header();

$SIG{__WARN__} = \&warnings;

my $var = 1;
my $number = $var + 12;
my $number = 10;
print $number;


sub warnings{
    print '<b>Warnung: '. join("",@_) .'</b>';
dann wird die Warnung wieder nicht im Browser ausgegeben (wie Du siehst habe ich die Variable $number zwei mal definiert).
Auf der Kommandozeile bekomme ich aber eine Warnung wie:
test.cgi: "my" variable $number masks earlier declaration in same scope at test.cgi line 14.
Ich könnte mir die Warnung höchstens wieder, wie oben beschrieben, als Kommentarzeile in den Quelltext einfügen lassen.

Da dass mehrfache definieren einer Variable nicht unbedingt das Ergebnis liefert welches man sich erwünscht und man dieses u.U. auch nicht so einfach bemerkt, möchte ich solche Warnungen gerne "um die Ohren gehauen" bekommen (im Browser anzeigen), anstatt sie "hinter vorgehaltener Hand" zugeflüstert zu bekommen (im Quelltext als Kommentarzeile verstecken).

Um so mehr Code man schreibt, um so höher ist auch das Risiko dass man eine Variable (unbeabsichtigt) mehrfach definiert.
Mir geht es also nicht nur um allgemeine Codingfehler, sondern auch um Flüchtigkeitsfehler.
 

Neue Beiträge

Zurück