|< 1 2 >| | 13 Einträge, 2 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use strict; use warnings; my $foo = 123; sub foo {print 'foo'} package bar; print $main::foo; &main::foo;
Gast+2008-04-27 19:44:47--hm. Aber das müsste doch eigentlich klappen. Auf die Funktion kann ich doch auch mit dem Packagenamen zugreifen; warum funktioniert das mit der Variable nicht?
Per our deklarieren wäre eine Alternative, allerdings ließt man doch immer, man soll solche Variablen vermeiden, wenn es nicht unbedingt nötig ist(?).
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; our $foo = 123; package bar; print $main::foo; print $foo
Quote[EDIT]und mit our wird die Variabel nur Dateiweit global.
Struppi+2008-04-27 21:06:13--[EDIT]und mit our wird die Variabel nur Dateiweit global.
Gast+2008-04-27 21:29:59--Ach so. Das heißt, wenn ich die Variable in einem Modul verwenden will (was ich vor habe) muss ich sie zwangsläufig per $Packagename::Variablenname aufrufen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package xxx; { # Blockstart our $public; my $private; # in diesem Blockscope ist jedes $public als Kurzschreibung für $xxx::public deklariert # in diesem Blockscope ist jedes $private als lexikalisch deklariert, # und wird privat beim Blockscope gespeichert, absolut unabhängig vom Package } # Blockende # $private existiert nicht mehr, weil sein Scope verlassen wurde, Zugriff (ohne "Schmuggelaktionen") ist unmöglich # hier ist der kurze Variablenname $public undeklariert # ich kann aber immer noch problemlos auf die Variable $xxx::public zugreifen # auch aus einer anderen Datei
|< 1 2 >| | 13 Einträge, 2 Seiten |