Thread use und OO verwirren mich: liegt wahrscheinlich am Namespace
(4 answers)
Opened by macMeck at 2003-10-13 15:59
es handelt sich um ein Problem mit Exporter: Exporter
Kurz gesagt: dein Hauptprogramm laeuft im Package main. Dein Modul1 im Package MyModule1. Der Exporter sagt dem Modul, es soll das Modul in den aktuellen Namensraum des Aufrufers (in diesem Fall main) importieren, sodass da $MyModule::VERSION gleich $main::VERSION wird. soweit - sogut. Wenn du jedoch ZweitesModul in MyModul einbindest, wird $ZweitesModul::VERSION durch den Exporter in den Namensraum des Aufrufers (=MyModule) importiert, und ueberschreibt somit $MyModule::Version. die Spezialvariable $VERSION zu exportieren ist somit ziemlich ungeschickt. In meinen Scripten verzichte ich zu 99% auf den Exporter (bzw. verwende nur EXPORT_OK -> siehe doku) und gebe die Variablen/Subroutinen immer voll qualifiziert an, weil ich finde, es macht das Programm klarer (oder weisst du, von woher nun $VERSION wirklich kommt? oder &GiveMeFive() ?). Also z.B. $MyModule::Version oder MyZweitesModule::Version oder so... vorhandene Module lade ich meistens mit use CGI (); weil die Klammern hinter dem Modulnamen (=leere Liste) diese Namensraumverschmutzung (=Namespacepollution) des Exporters verhindert\n\n <!--EDIT|Strat|1066048001--> perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |