Ein häufiger Anfänger-Fehler in Perl ist die Meldung “Global symbol $Variable requires explicit package name” – die lässt sich aber ganz einfach beheben! Ausgelöst wird sie, wenn man die Variable, die in der Fehlermeldung genannt wird, nicht zuvor deklariert hat, das Perl-Skript aber durch die Anweisung “use strict” genau dies fordert.
Zum Beheben des Fehlers muss daher die Variable einfach nur vor der ersten Verwendung deklariert werden, anschließend kann man sie ganz normal (und ohne die Fehlermeldung “Global symbol $Variable requires explicit package name”) benutzen.
“Global symbol $Variable requires explicit package name”
Das folgende kurze Programm wird die Fehlermeldung auswerfen, wenn die Variablen nicht zu Beginn deklariert wurden:
$x = 12;
$y = 18;
$z = $x + $y;
Zum Beheben kann man sie dabei einfach deklarieren, in dem man vor die erste Verwendung “my” schreibt:
my $x = 12;
my $y = 18;
my $z = $x + $y;
Hat man die Variablen schon einmal deklariert (wie $x und $y in Zeile 1 und 2) kann man sie anschließend ganz normal nutzen – wie in dem Beispiel oben in Zeile 3: Hier muss das “my” nur für $z vor der ersten Verwendung angegeben werden.
“Global symbol requires…”-Fehler bei Funktionen
Der gleiche Fehler tritt aber auch auf, wenn man eine Variable nur in einer Funktion oder auch nur in einem bestimmten Programmteil – zum Beispiel dem Code, der nur bei positiver IF-Bedingung ausgeführt wird – deklariert, aber später darauf zugreifen möchte:
my $x = 12;
my $y = 18;
if($x > 0 && $y > 0) {
my $z = $x + $y;
}
print $z;
Auch dieser Code führt zu dem Fehler – richtig müsste das Programm so aussehen: