Je crée un module Perl et je suis toujours en train de comprendre comment Perl traite les objets. C'est le new
sous que j'ai écrit pour créer un objet et je n'ai pas d'éléments de mise à jour de problème:Comment accéder aux fonctions d'objet dans Perl à partir du même package
sub new {
my $class = shift;
my ($self) = {
name => undef
};
bless($self, $class);
return $self;
}
sub get_name {
my $self = shift;
$self->{name} = 'Eve';
return $self->{name};
}
je peux utiliser l'amende objet quand je l'appelle le module et l'accès d'un autre fichier, mais je veux utiliser les données de l'objet dans d'autres zones du code du module.
J'ai donc aucun problème à faire ceci:
my $new_object = new ProgramTest; # ProgramTest being the module/package
my $name = get_name();
Mais je veux utiliser les $self
éléments dans une méthode « module interne » qui est jamais accessible par un script extérieur. Donc, je veux avoir quelque chose comme ceci:
sub get_variables {
return (name); # I don't know how to get the name here
# (I plan to have other variables, too)
}
Je suis probablement manque quelque chose d'évident (je suis sûr que je vais me botter quand je vois la solution), de sorte que toute aide appréciée! Je veux ceci pour que le reste du module puisse utiliser les variables (sans changer) car il y a des conditions qui s'appuient sur leurs valeurs.
Voir [Comment puis-je faire des fonctions privées dans un module Perl?] (Http://stackoverflow.com/questions/451521/how-do-i-make-private-functions-in-a-perl -module). – qqx
C'est en fait très utile et explique pourquoi je continue à voir '_' utilisé dans certains endroits et pas d'autres +1 – dgBP
une autre chose à apprendre" nouvelle chose "est mauvaise dans Perl: http://shadow.cat/blog/matt- s-trout/indirect-mais-encore-fatal/parmi beaucoup d'autres bons articles –