Thread Perl bug in 5.10.0
(4 answers)
Opened by sid burn at 2009-06-15 12:03
Das ist kein Bug und auch in 5.8 schon so.
Zunächst einmal: use warnings lädt automatisch Carp.pm: Wenn du use warnings aus dem Beispiel rauslässt, solltest du denselben Fehler bekommen wie unter 5.10. Zweitens: Warum kommt dieser Fehler bei require, aber nicht bei use? Ganz einfach, ein use findet ganz zu Anfang statt, und wenn perl die Zeile mit dem Aufruf von confess() kompiliert, hat es Carp.pm schon geladen und weiss, aha, confess ist eine Funktion. Wenn du es aber mit require lädst, weiss perl beim kompilieren der Zeile mit confess noch gar nicht, was confess überhaupt sein soll. Funktionsaufrufe, bei denen die Funktionen zur compile time noch nicht bekannt sind, brauchen Klammern. edit: steht auch so in perlsub: Quote Last edited: 2009-06-15 13:04:52 +0200 (CEST) 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 |