Hallo,
"Lexical scope" ist der lexikalische Gültigkeitsbereich, d.h. der
Block bzw. Bereich in deinem Programm, in dem eine bestimmte Variable
gültig ist. Wird eine Variable nicht -- zb. mit my -- für einen
bestimmten Gültigkeitsbereich deklariert, wäre dieser Bereich global,
was bei der Verwendung von "use strict;" nicht erlaubt ist.
Es würde, um der Vollständigkeit Ehre angedeien zu lassen, auch funktionieren, wenn Du Variablen mit (z.B.) $package::variablenname ansprechen würdest, ohne diese mit my einzuführen. So würde
#!/usr/bin/perl -w
use strict;
$main::abc = 1;
print $main::abc;
keinen Fehler verursachen.
Variablen ständig so zu notieren wäre dann doch etwas mühselig, aber genau das ist es, was die Fehlermeldung bezüglich 'expicit package name' eigentlich aussagt.
Grüße
Klaus