Thread Fehlersuche Skript gibt falsche Warnungen aus
(14 answers)
Opened by hcx at 2011-08-03 12:08
Hi, wie Linuxer ja schon erklärt hat, musst Du die Reihenfolge der if-Bedingungen beachten (die größte Zahl zuerst):
Code (perl): (dl
)
1 2 3 if ($used > 90) { ... } elsif ($used > 80) {... } elsif ($used > 50) { ... } Der Aufruf von Mail::Sender->new() macht so keinen Sinn, die eckigen Klammern in der Doku des Moduls sollen kenntlich machen, dass die Argumente fakultativ sind. Deine Version erzeugt eine Liste '()' mit genau einem Element, nämlich einem anonymen Hash '{}', dieses hat als Elemente eine zufälligerweise gerade Anzahl von Array-Referenzen (anonymen Arrays) '[]'. Ersetz mal die Kommata hinter dem 1., 3. usw. Element durch den (äquivalenten [edit: s. unten]) Pfeil, dann siehst Du folgenden Aufbau: Code (perl): (dl
)
1 2 3 4 5 { [from => 'system@gmx.net'] => [mail => 'mail.gmx.net'], [authid => 'hcx@gmx.net'] => [authpwd => 'geheim'], [debug => $DEBUG] => [auth => 'LOGIN'] } Das ist dasselbe wie: Code (perl): (dl
)
1 2 3 4 5 { ['from', 'system@gmx.net'] => ['mail', 'mail.gmx.net'], ['authid', 'hcx@gmx.net'] => ['authpwd', 'geheim'], ['debug', $DEBUG] => ['auth', 'LOGIN'] } Das ergibt zwar keine Fehlermeldung (Arrayreferenzen sind ja Skalare), ist aber sicher nicht gewünscht. Schau Dir am besten mal 'perldoc perlreftut' und 'perldoc perldsc' an. Besser ist (vgl. renee) ohnehin die 'direkte' Objektsyntax, also das Aufrufen des Konstruktors mit Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 my $mailsender = Mail::Sender->new( { from => 'system@gmx.net', mail => 'mail.gmx.net', authid => 'hcx@gmx.net', authpwd => 'geheim', debug => $DEBUG, auth => 'LOGIN' } ); Hier gibst Du dem Konstruktor eine Hashreferenz (ein anonymes Hash) als Argument. Gruß FIFO edit: zur Pfeil- vs. Kommanotation: Der Pfeil ist wie ein Komma, heißt auch 'fat comma', bewirkt aber ein automatisches Quoten des linken Operanden, wenn dieser ein bareword ist. (foo => $bar) ist also äquivalent zu ('foo', $bar) Editiert von FIFO: Pfeil/Komma klarer, perlreftut Last edited: 2011-08-04 09:32:50 +0200 (CEST) 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"
|