[Perl] Erreur non-lvalue subroutine

Erreur non-lvalue subroutine [Perl] - Perl - Programmation

Marsh Posté le 17-01-2006 à 15:19:24    

Bonjour,
 
Je vous demande de nouveau de l'aide suite a un problème de script...
J'espere que vous pourrez me répondre sans trop profiter de votre temps.
 
Donc j'ai un script qui plante... jusqu'a là logique...
 
il m'indique:
 

Citation :

Can't modify non-lvalue subroutine call at /var/www/www.XxXxX.com/cgi-bin/panier.cgi line 103, <DATA> line 22008., referer: http://www.XxXxX.com/cgi-bin/displaybooks.cgi


 
et donc je c pas trop se qu'il entend par ca... dsl je suis pas vraiment spécialisé en dev...
 
et donc si je regarde la ligne qui pose problème j'ai ca:
 

Citation :

$session->booksUID() = "";


 
mais j'avoue comme dans ma précédente demande d'aide... être un peu a l'ouest.
 
donc si vous avez une idée ou bien une astuce je vous remercie d'avance.
 
++++
 
 
Benoît

Reply

Marsh Posté le 17-01-2006 à 15:19:24   

Reply

Marsh Posté le 17-01-2006 à 15:47:30    

sans voir le reste du code ça va pas être facile.
Mais j'imagine que booksUID c'est une sub définie quelque part, et tu essayes d'affecter une valeur au retour de cette sub... s'pas possible!

Reply

Marsh Posté le 17-01-2006 à 16:09:38    

oui je suis désolé il m'est difficile de donner le code... :/
 
mais sinon le booksUID je le retrouve dans une sub comme ca:
 
sub mandatoryParameters {
        my $self = shift;
        $self->booksUID([]);
        etc...}
 
serais-tu si je peux mettre la sub en lvalue pour que ca passe?
 
merci
 
Benoît


Message édité par bennneuh le 17-01-2006 à 16:11:49
Reply

Marsh Posté le 17-01-2006 à 16:43:19    

BooksUID est une sub qui a vu de nez doit prendre une ref sur un tableau en paramètres.
tu ne peux donc pas faire:

Code :
  1. $session->booksUID() = "";


Tu souhaitais faire quoi en faisant ça? Vider les booksUID? A ce moment là fais comme dans le bout que tu montres:

Code :
  1. $self->booksUID([]);


 
Mais encore une fois c'est un peu à l'aveuglette...

Reply

Marsh Posté le 17-01-2006 à 17:14:59    

nan enfaite la ligne  

Citation :

$session->booksUID() = "";


Est l'initialisation pour ensuite rentrer des nouvelles infos concernant un bouquin dans une variable de session... pour qu'a la fin la personne est un panier avec ses bouquins et les achetes...
 
bon finalement il semblerait que la session suite a une migration ne fonctionne pu dutout... du coup il va falloir que je redeveloppe toute la parti session... '=/  c pas trop compliqué apache::session ? et avec mysql?
 
merci déjà pour toutes les infos.
 
+++
 
Benoit

Reply

Marsh Posté le 17-01-2006 à 17:58:56    

une lvalue sub c'est justement une sub à laquelle on peu assigne une valeur (par exemple substr())
 
on la definie comme suit:
 
sub blabla :lvalue {
  ...
}
 
et la derniere variable de la sub peut etre assignée
 
il faudrait voir la methode booksUID pour voir si elle est définie comme lvalue ou pas
 
pour ce faire il faudrait voir à quelle classe appartient l'objet $session, et regarder dans le code de cette classe.
 
Si ca marchait avant c'est peut etre parceque les deux installs n'avaient pas la meme version de cette classe, et que l'une des deux definie une API avec lvalue et l'autre non!
 

Reply

Marsh Posté le 17-01-2006 à 18:00:13    

pour connaitre al classe de $session il suffit de toruver le new, comme pour ton precedent probleme

Reply

Marsh Posté le 17-01-2006 à 18:31:09    

pospos la classe :)

Reply

Marsh Posté le 17-01-2006 à 23:19:12    

et bien merci bcp pour toutes vos réponses! je v voir ca demain encore! :)
 
et comme d'hab merci bcp sur ce coup la vous m'avez pas mal aidez! J'aimerais trop que ca fonctionne et ne pas avoir a me retapper toute la parti session! :p
 
+++
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed