Alle Variablen (mit Ausnahme der mit local oder my vereinbarten)
sind eigentlich global sichtbar. Man kann jedoch mit der package
Anweisung zwischen verschiedenen Namensräumen umschalten. Der zu
Beginn voreingestellte Namensraum ist main.
Beispiel:
require 'show.pl';
$a = 1;
package A;
$a = 2;
package B;
$a = 3;
package main;
&show(qw( $a ));
&show(qw( $::a ));
&show(qw( $main::a ));
&show(qw( $A::a ));
&show(qw( $B::a ));
&show(qw( $B::{'a'} ));
&show(qw( ${$B::{'a'}} ));
*::a = \$B::a;
print "\n";
&show(qw( $a ));
&show(qw( $A::a ));
&show(qw( $B::a ));
Ausgabe:
$a = 1
$::a = 1
$main::a = 1
$A::a = 2
$B::a = 3
$B::{'a'} = *B::a
${$B::{'a'}} = 3
$a = 3
$A::a = 2
$B::a = 3