Sie haben eine gute Antwort bereits, aber vielleicht wird dies auch hilfreich sein.
Die our
Deklaration kombiniert Aspekte von my
und use vars
. Es funktioniert ähnlich wie use vars
, indem es Paketvariablen deklariert; Auf diese Weise deklarierte Variablen sind jedoch lexikalisch begrenzt und können nicht außerhalb des Bereichs aufgerufen werden, in dem sie deklariert wurden (es sei denn, Sie verwenden den vollständig qualifizierten Namen der Variablen). Darüber hinaus ist eine mit our
deklarierte Variable über ihren gesamten lexikalischen Gültigkeitsbereich sichtbar, sogar über Paketgrenzen.
Hier ist eine Tabelle, die ich vor einiger Zeit zu meinen Perl-Notizen hinzugefügt habe. Ein Beispiel finden Sie unter this SO answer.
Scope/ Package
Namespace Variable Private New
---------------------------------------------------
my Lexical No Yes Yes
our Lexical Yes No No
use vars Package Yes No No
Danke, ich verstehe jetzt. –
Es ist wirklich ein Alias, wenn es nur eine Ausnahme zu 'strict' dann' perl -le 'unser $ foo = 42; Paket A; print "$ foo $ main :: foo" ' 42 42 "würde dasselbe wie' perl -le 'ausgeben vars qw/$ foo /; $ foo = 42; Paket A; print "$ foo $ main :: foo" '', was eine Ausnahme ist, und wir würden' unser' nicht brauchen. –
@Chat einen guten Punkt. – hobbs