globale variablen in perl gibt es eigentlich nicht; fast das gleiche sind jedoch packagevariablen (nicht my-variablen).
wenn du, wie es sich gehoert, mit use strict arbeitest, weist es dich unter anderem darauf hin, wenn ihm noch unbekannte variablen (mit ausnahme der Builtins wie %ENV, $a, $b, @INC, $_, @_, ... ->
perlvar) unterkommen.
wenn du eine variable explizit als nicht-my-variable verwenden willst (kommt zwar aeusserst selten vor, aber doch gelegentlich), kann man auch packagevariablen deklarieren:
# ab perl5.6
our $GlobalVar1 = 20;
# oder der alte, immer noch gueltige weg
use vars qw($GlobalVar2 @GlobalArray);
$GlobalVar2 = 30;
@GlobalArray = (1..50);
Meiner Meinung nach sollte man "globale" Variablen nur unter folgenden Umstaenden verwenden:
1. der Wert der Variablen aendert sich nicht (z.B. bei Konfigurationen, wobei da
Readonly der oft bessere weg ist
2. das Script hat nicht mehr als 10 zeilen
fuer fast alles andere sind closures in kombination mit my-variablen der bessere weg