Thread Use of uninitialized value
(12 answers)
Opened by ~Br4inP4in~ at 2008-09-13 15:11
leute, probiert das doch bitte einmal aus, bevor ihr postet.
1. ein 'or' hat zu geringe präzedenz, als dass man es hier verwenden könnte. beweis: Code: (dl
)
1 perl -wle' es wird zuerst geprüft, ob $order true ist, und dann, ob 0 gleich "name" ist. das *kann* nicht funktionieren. wie man sieht. also: *wenn* dann || verwenden. 2. wenn man nun $var || '' oder $var || 0 benutzt, muss man ganz doll aufpassen, es mag hier die schreibarbeit verkürzen, aber ich hab schon mal eine weile gesucht, um einen bug zu finden, der durch so etwas entstanden ist. überall, wo man $var || '' schreibt, wird die 0 automatisch zu '', und überall, wo man $var || 0 schreibt, wird '' automatisch zu 0. das ist *hier* in diesem fall kein problem, aber sobald das progrämmchen ein bisschen grösser wird, kann es das werden. also wenn man soetwas benutzt, immer nachdenken, ob es einen fall gibt, in dem die 0 oder der leere string auch ok wären. 3. @struppi: wieso soll $zahl eq "string" eine warnung ergeben? nur ein numerischer vergleich erzeugt bei soetwas eine warnung. Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wie frage ich & perlintro brian's Leitfaden für jedes Perl-Problem |