Thread Fehlerhafte Eingabe erzeugt 500 Error anstatt Scriptfehlermeldung
(38 answers)
Opened by Auctioneer at 2012-12-01 02:58
Hi,
es ist schwierig, Deinen Code zu lesen. Das liegt 1. an fehlender Strukturierung/Einrückung und 2. an ungünstig verwendeten Konstruktionen (insbesondere mit unless). Man kann auch nicht erkennen, womit denn $config{'header'} gefüllt wird. Die Fehlermeldung legt ja nahe, dass irgendwie HTML body content darin landet. Du verwendest foreach falsch: Wenn Du foreach(%hash) { ... } schreibst, macht Perl aus dem Hash eine flache Liste (key1, value1, key2, ...) und iteriert über diese Liste. Wenn Du über die Hash-Keys iterieren willst: foreach(keys %hash) { ... }. Funktionen besser ohne & aufrufen, es sei denn, Du weißt genau, was Du willst. Viele Konstruktionen sind unübersichtlich oder irreführend. Quote Quote unless $foo ne 'bar'?? Lesbarer so (globales $loginalias ist auch Käse, besser als Argument mitgeben): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 sub verify_login { my $loginalias = shift; if ($loginalias eq '') { login_form; return ''; } my($password, $undef) = read_reg_file($loginalias); oops('You must enter a valid username and password') if $loginpassword eq ''; # ... return 1; } Wenn Du Code postest - insbesondere wenn es Deinem kommerziellen Interesse dient - solltest Du ihn so präsentieren, dass er angenehm zu lesen ist, sonst macht das Helfen keine Freude. Editiert von FIFO: eq korrigiert Last edited: 2012-12-01 11:14:39 +0100 (CET) Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|