Est-il possible de définir une variable de package sans utiliser notre.Variables de package Perl sans utiliser notre
Voici un exemple de code qui expliquerait le cas mieux que les mots:
package A::B::C;
use strict;
use warnings;
use Exporter();
our @ISA = qw/Exporter/;
our @EXPORT =();
our @EXPORT_OK = qw/INFO/;
our %EXPORT_TAGS = (
default => [qw/INFO/]
);
Exporter::export_ok_tags("default");
BEGIN {
$C::verbose = 0;
}
sub INFO {
my $msg = shift;
if ($C::verbose) {
print("$msg\n");
}
}
Réglage verbeux la variable $ à partir d'un script qui utilise le package A :: B :: C ne change pas la valeur de $ verbose dans le paquet:
use A::B::C;
$A::B::C::verbose = 1;
Je sais parfaitement que l'utilisation de « notre » dans le paquet résoudrait le problème, mais je suis plus intéressé de savoir ce qui se passe et pourquoi il est impossible de définir verbeux la variable $ d'un script qui utilise le paquet A :: B :: C. Ou encore mieux, que se passe-t-il pour empaqueter des variables qui sont seulement utilisées (et non formellement déclarées) dans les sous-routines de paquets; quelle portée ont-ils?