Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]36[/thread]

Eine Frage (Internal Server Error)



<< >> 10 entries, 1 page
Ishka
 2003-09-13 00:35
#3258 #3258
User since
2003-08-04
771 articles
HausmeisterIn
[Homepage] [default_avatar]
a) Das gehört in CGI
b) Der Titel sagt Null aus...
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
BrownWolf
 2003-09-13 00:30
#3259 #3259
User since
2003-08-15
308 articles
BenutzerIn
[default_avatar]
Hallo,

sorry wenn ich nochmal nerve.
Ich hatte glaub ich damals keine Antwort auf meine Frage bekommen.

Es ging damals um das:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
use CGI::Carp qw(fatalsToBrowser set_message);

BEGIN {
    sub error_handler {
    my &#36message = shift;
    print "Da ist was schiefgelaufen: &#36message";
    }
setmessage(\&error_handler);
}


Diese shice setmessage Subroutine sendet einfach nen Content-type mit. Da schon eins gesendet wurde steht es jetzt auf der HTML Page.

Siehe: http://perlecke.cybton.com/cgi-bin/cards/cards.pl?action=admin

Wenn ich das andere Content-type wegmache kommt ein Internal Server Error und das Script funktioniert nicht.

Wenn ich es unter dem BEGIN mache ... dann isses wech. Aber nur auf der Admin Page ... auf der Startpage ist dann auch nen Internal Server Error.

Kann sein das ich Alsheimer oder so habe ... kann mir trotzdem nochmal jemand sagen wie ich das jetzt wegbekomme ?

Danke,
BrownWolf
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
[E|B]
 2003-09-13 00:42
#3260 #3260
User since
2003-08-08
2561 articles
HausmeisterIn
[Homepage] [default_avatar]
Geht es so?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
use CGI::Carp qw(fatalsToBrowser);

BEGIN {
    sub error_handler {
    my &#36message = shift;
    return "Da ist was schiefgelaufen: &#36message";
    }
setmessage(&error_handler);
}
\n\n

<!--EDIT|[E|B]|1063399381-->
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
BrownWolf
 2003-09-13 06:10
#3261 #3261
User since
2003-08-15
308 articles
BenutzerIn
[default_avatar]
Also er soll die Seite ja ausgeben und nicht zurückgeben.
So erscheint eine weisse Seite und nur das Content-type: text/html
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
format_c
 2003-09-13 10:10
#3262 #3262
User since
2003-08-04
1706 articles
HausmeisterIn
[Homepage] [default_avatar]
[quote=BrownWolf,12.09.2003, 22:30]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
use CGI::Carp qw(fatalsToBrowser set_message);

BEGIN {
    sub error_handler {
    my $message = shift;
    print "Da ist was schiefgelaufen: $message";
    }
setmessage(\&error_handler);
}
[/quote]
Preisfrage: Du importierst doch in deine Symboltabelle eine Funktion Namens set_message von CGI::Carp.
Sollte man sie dann auch nicht so aufrufen?

Gruß Alex
macMeck
 2003-09-13 11:51
#3263 #3263
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Naja, der Vorschlag kommt ja aus der Doku von CGI::Carp und nicht von ihm...

macMeck
It all works, as long as it's documented!
Dubu
 2003-09-13 14:26
#3264 #3264
User since
2003-08-04
2145 articles
ModeratorIn + EditorIn

user image
In meiner CGI::Carp Doku steht jedenfalls kein "setmessage", aber ich denke, dass das nur ein Tippfehler von BrownWolf war.

Zum Problem: set_message() kann ja nicht feststellen, ob zum Zeitpunkt des Fehlers schon ein Content-type gesendet wurde (was ist z.B. bei Compile-Time-Fehlern?), deshalb muss es selber einen senden.
BrownWolf
 2003-09-13 16:38
#3265 #3265
User since
2003-08-15
308 articles
BenutzerIn
[default_avatar]
Ja soweit war ich doch schon ....

Quote
Diese shice setmessage Subroutine sendet einfach nen Content-type mit. Da schon eins gesendet wurde steht es jetzt auf der HTML Page.


Wie kann ich das unterbinden ?
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
BrownWolf
 2003-09-13 19:38
#3266 #3266
User since
2003-08-15
308 articles
BenutzerIn
[default_avatar]
Das kann doch nicht sein das niemand eine Lösung hat ?
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
format_c
 2003-09-13 19:52
#3267 #3267
User since
2003-08-04
1706 articles
HausmeisterIn
[Homepage] [default_avatar]
Verlager doch deine Funktionen die Fehler verursachen können so, dass dein Script noch keinen Header ausgegeben hat.
Bsp.:
aus
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
print "Content-type: text/html

";
print << HTML
HTML-Code
HTML
open FILE,'<',$file or  die $!;
print while <FILE>;
close FILE;
print  << HTML;
Der Rest
HTML

in
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
open FILE,'<',$file or die $!;
my @inhalt = <FILE>;
close FILE;
print "Content-type: text/html\n\n";
print << "HTML";
HTML-Code
@inhalt
Der Rest
HTML


Wird dann zwar etwas speicher intensiver aber das müsste das erreichen was du willst.

Gruß ALex\n\n

<!--EDIT|format_c|1063468465-->
<< >> 10 entries, 1 page



View all threads created 2003-09-13 00:35.