Problème fonction exportée d'un module

Le
paul POULAIN
Bonjour,

J'ai un problème qui me semble pour le moins bizarre

soit un package A.pm, et un package B.pm

B.pm contient "use A;"

et fait appel à une fonction ModReserveStatus qui est dans A, et qui est
bien exportée :
@EXPORT = qw(

&ModReserveStatus

);

Sauf que, lorsque le script s'exécute, il dit "Undefined subroutine
&B::ModReserveStatus"

Il n'y a évidemment pas ModReserveStatus dans @EXPORT de B.pm, je ne
comprends pas bien ce qui se passe

Si quelqu'un peut éclairer ma lanterne, je sens que c'est une erreur
classique

PS : les autres fonction de B.pm fonctionnent parfaitement bien :-(

--
Paul
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #152408
À (at) Tue, 18 Sep 2007 16:51:40 +0200,
paul POULAIN
J'ai un problème qui me semble pour le moins bizarre...

soit un package A.pm, et un package B.pm

B.pm contient "use A;"

et fait appel à une fonction ModReserveStatus qui est dans A, et qui est
bien exportée :
@EXPORT = qw(
...
&ModReserveStatus
...
);

Sauf que, lorsque le script s'exécute, il dit "Undefined subroutine
&B::ModReserveStatus"

Il n'y a évidemment pas ModReserveStatus dans @EXPORT de B.pm, je ne
comprends pas bien ce qui se passe...


Sans voir plus de code, on peut imaginer plein de raisons... La
première qui me vient à l'esprit est qu'il manque peut-être les lignes
suivantes (selon la doc de 'Exporter') dans le module A :

require Exporter;
@ISA = qw(Exporter);

Une autre raison : le fichier A.pm lu par Perl n'est pas celui que
vous croyez...

--
Paul Gaborit - Perl en français -
paul POULAIN
Le #152407
Paul Gaborit wrote:
Sans voir plus de code, on peut imaginer plein de raisons... La
première qui me vient à l'esprit est qu'il manque peut-être les lignes
suivantes (selon la doc de 'Exporter') dans le module A :

require Exporter;
ca , ca y est

@ISA = qw(Exporter);
ca aussi...


Une autre raison : le fichier A.pm lu par Perl n'est pas celui que
vous croyez...


Tiens, une explication possible : dans B.pm, il y a 2 fois "use A;". Est-ce
que ca peut expliquer le problème ?
--
Paul

Paul Gaborit
Le #152406
À (at) Tue, 18 Sep 2007 18:08:51 +0200,
paul POULAIN
Paul Gaborit wrote:
Sans voir plus de code, on peut imaginer plein de raisons... La
première qui me vient à l'esprit est qu'il manque peut-être les lignes
suivantes (selon la doc de 'Exporter') dans le module A :

require Exporter;
ca , ca y est

@ISA = qw(Exporter);
ca aussi...



Bon. Mauvaise pioche. Il faut que je change ma boule de cristal. ;-)

Une autre raison : le fichier A.pm lu par Perl n'est pas celui que
vous croyez...


Tiens, une explication possible : dans B.pm, il y a 2 fois "use A;". Est-ce
que ca peut expliquer le problème ?


Non (le deuxième 'use' est une simple no-op).

Pas de warnings ? Avez-vous vérifiez partout le nom de la méthode ?
Avez-vous tenter de supprimer tout le code inutile pour essayer
d'isoler le bug ? Pouvez-vous nous monter le résultat de cette
isolation ?

--
Paul Gaborit - Perl en français -

Publicité
Poster une réponse
Anonyme