Thread Problem mit HASH ref
(48 answers)
Opened by bianca at 2010-05-02 13:09
Hab das jetzt mal noch weiter aufgedröselt bei mir und wenn ich es auf das Nötigste zusammen stauche kommt das hier raus:
test.pl: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/usr/bin/perl use strict; use warnings; if (1==1) { require 'test2.pl'; } print 'vorher: '.main->can('test')."\n"; require 'test2.pl'; print 'nachher: '.main->can('test')."\n"; { package testtest; require 'test2.pl'; } testtest::test(); test2.pl: Code (perl): (dl
)
1 2 3 4 5 6 7 use strict; use warnings; sub test { print "Hallo\n"; } return '1'; Oben die Bedingung symbolisiert etwas, was ich erst bei ganz genauem Hinschauen fand, das hatte ich vorher übersehen. Ich konnte mir die Fehlermeldung "Undefined subroutine &testtest::test called at test.pl line 17." nicht erklären. Deshalb baute ich eine Ausgabe des Rückgabewertes von ->can('test') ein. Auch das begriff ich nicht, weil es vor und nach dem require() gleich war. Jetzt erst begreife ich, dass Perl ein require() immer nur einmal ausführt. Und da es das oben in der Bedingung schon gemacht hat brauchte es das unten im package nicht mehr tun. Und das war mein Verständnisfehler. Vielen Dank an Dich, GwenDragon! Sonntag gerettet. Frage: darf ich davon ausgehen, dass Perl tatsächlich alle folgenden require() für die selbe Datei wirklich ignoriert, es sich also gänzlich neutral für den Arbeitsspeicher verhält? Editiert von bianca: Frage ergänzt Last edited: 2015-07-26 09:23:57 +0200 (CEST) 10 print "Hallo"
20 goto 10 |