bonjour,
Je suis entrain de découvrir la programmation PERL et plus particulièrement PERL OO. Mon problème est le suivant:
J'ai un DOM XML qui sert a initialiser une instance d'une classe Service.
pour cela le constructeur est appelé et reçoit la racine. dans le DOM, j'ai une balise <critere> qui contient des enregistrements <regexp>.*</regexp>. Je voudrai que ma classe contienne comme attribut la liste de ces regexp. pour cela j'ai une méthode dont le code est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
sub criteres {
        my $self = shift;
        if (@_) {	
        	my $NodeList = shift;
        	for (my $i = 0; $i < $NodeList->getLength; $i++){
        		$self->{CRITERES}[$i] = $NodeList->item($i)->getFirstChild->getNodeValue;
					 }
        }
        foreach my $i ( 0 .. $#{$self->{CRITERES}} ) { print $self->{CRITERES} [$i] , "\n";}
        return $self->{CRITERES};
    }
qui est appelée depuis le constructeur par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
my $ServiceCriteres = $serviceRoot->getElementsByTagName('criteres')->item(0)->getElementsByTagName('regexp');
	    $self->criteres($ServiceCriteres);
Mon problème est que le foreach d'affichage fonctionne ici, mais si je le sort dans mon programme principal, ça ne compile pas. le code de l'appel est alors:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
my $service = Service->new($serviceRoot);
foreach my $i ( 0 .. $#{$service->criteres} ) { print $service->criteres [$i] , "\n";}
Je n'arrive plus a acceder au contenu de ma liste à l'exterieur de la methode criteres... Comment me sortir proprement de ce problème SVP
Merci de votre aide !!!