Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4805 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [perl] formulaire

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[perl] formulaire

n°1740776
yuxi
Posté le 03-06-2008 à 12:28:27  profilanswer
 

J'ai récupéré une page web qui contient un formulaire, j'ai fais quelques recherches concernant le HTTP::FORM, mais je n'ai pas tout compris...
 
est ce que quelqu'un sait comment récupérer les données du formulaire, les mettre dans une variable afin de pouvoir l'utiliser apres ?

mood
Publicité
Posté le 03-06-2008 à 12:28:27  profilanswer
 

n°1740792
Elmoricq
Modérateur
Posté le 03-06-2008 à 13:20:29  profilanswer
 

Je ne connais pas HTTP::FORM, de mon côté j'utilise surtout CGI :
http://search.cpan.org/~lds/CGI.pm-3.37/CGI.pm

n°1740835
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-06-2008 à 14:16:17  profilanswer
 

ça existe pas http::form ...  
 
A la limite il y a bien http::Request::form , mais comme le disait Elmoricq je pense que tu devrais utilisé CGI ( et param ).


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1740894
yuxi
Posté le 03-06-2008 à 15:39:13  profilanswer
 

Code :
  1. if ((@$_[6] >= $warningValue) && (@$_[6] < $criticalValue) ) {
  2. MIME::Lite->send("smtp", $ServeurSMTP, Timeout=>60);
  3.  my $msg = new MIME::Lite
  4.             From    =>$mailfrom,
  5.             To      =>$mailto,         
  6.             Subject =>'ATTENTION',
  7.             Type    =>'TEXTE', 
  8.             Data    =>"petit test... réalisé par No Future ! Attention vous avez atteint le niveau d'alerte actuellement de 75%! Votre pourcentage de licence utilisé est de : @$_[6] %";
  9.  $msg -> send;
  10. }
  11. elsif ( @$_[6] >= $criticalValue ) {
  12. MIME::Lite->send("smtp", $ServeurSMTP, Timeout=>60);
  13.  my $msg = new MIME::Lite
  14.             From    =>$mailfrom,
  15.             To      =>$mailto,         
  16.             Subject =>'ATTENTION',
  17.             Type    =>'TEXTE', 
  18.             Data    =>"petit test... réalisé par No Future ! Attention vous avez atteint le niveau critique actuellement de 9O%! Votre pourcentage de licence utilisé est de : @$_[6] %";
  19.  $msg -> send;
  20. }


 
pouvez vous me dire si la syntaxe est correct s'il vous plait ?  
les variables $warningValue et $criticalValue proviennent d'une fonction qui les retournes ...

n°1740905
yuxi
Posté le 03-06-2008 à 15:52:05  profilanswer
 

est ce que quelqu'un peut me corriger s'il vous plait ???
 
 
 
my $warningValue;
my $criticalValue;
&variables_formulaire($warningValue, $criticalValue);  
if (@$_[6] != $warningValue) {
  MIME::Lite->send("smtp", $ServeurSMTP, Timeout=>60);
  my $msg = new MIME::Lite  
            From    =>$mailfrom,  
            To      =>$mailto,            
            Subject =>'ATTENTION',
            Type    =>'TEXTE',    
            Data    =>"petit test... réalisé par No Future ! Attention vous avez atteint le niveau d'alerte actuellement de 0%! Votre pourcentage de licence utilisé est de : @$_[6] %";
  $msg -> send;}
 

n°1740917
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-06-2008 à 16:32:12  profilanswer
 

Tout d'abord toujours mettre la ligne suivante au début de chaque script:

Code :
  1. use strict;


Ce qui te permettra déjà d'obtenir les warnings ( ici sur la non-définition de différentes variables).

 

Ensuite pour te "corriger" il faudrait déjà avoir une idée de ce qui ne va pas ( et accèssoirement de ce que fait "variables_formulaire" )


Message édité par anapajari le 03-06-2008 à 16:32:19

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1740940
yuxi
Posté le 03-06-2008 à 16:58:47  profilanswer
 

en fait, ma fonction, recupérère deux valeurs d'un formulaire. Qui sont deux chiffres... et les retourne a la fin,
 
je vous mettrai le code si besoin est... mais la je dois rentrer...

n°1741005
yuxi
Posté le 03-06-2008 à 19:09:05  profilanswer
 

pour la fonction j'ai trouvé, j'etais un peu loin de la vérité...

n°1741009
gilou
Modérateur
Modosaurus Rex
Posté le 03-06-2008 à 19:47:25  profilanswer
 

my $warningValue;  
my $criticalValue;  
&variables_formulaire(\$warningValue, \$criticalValue);  
Tes variables sont passées par référence, et sont donc modifiées au retour de l'appelante. Par contre, il te faudra modifier le corps de ta procédure variables_formulaire, et utiliser la notation $$variable à la place de $variable pour les deux paramètres.
A+,


Message édité par gilou le 03-06-2008 à 19:48:19

---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741218
yuxi
Posté le 04-06-2008 à 11:15:37  profilanswer
 


Voici, ce que j'ai mis en code dans tab.pl... là où il j'appelle la fonction variables_formulaire...
Les sub higherLevel... me permettre de résoudre ce probleme :

Can't use string ("
<!-- Added for UTF-8 page enco" ) as an ARRAY ref while "strict refs" in use at tab.pl line
 84.

 
 

Code :
  1. sub higherLevel(\@)
  2.   {
  3.   my(@alerte) = @{(shift)};
  4.   showArray(@alerte);
  5.   }
  6. sub showArray(\@)
  7.   {
  8.   my(@alerte) = @{(shift)};
  9.   my($temp);
  10.   foreach $temp (@alerte) { print "$temp\n"; }
  11.   }
  12. my @alerte = &variables_formulaire();
  13. higherLevel(@alerte);
  14. my $warningValue = $alerte[0];
  15. my $criticalValue = $alerte[1];
  16. if (@$_[6] != $alerte[0]->[0]) {


 
 
ce code ci, est la fin de ma fonction, ou procedure, variables_formulaire...
j'ai rajouté les $$ comme tu m'as dit... sauf dans "my" sinon ça marchait pas...
 mais j'ai cette erreur là :
Can't use string ("75" ) as an ARRAY ref while "strict refs" in use at tab.pl line 74.
 
 

Code :
  1. my $warningValue;
  2. my $criticalValue;
  3. $_ = $response->content;
  4. m/<input.*?name="thresholdLicenseUsageWarning".*?value="(.*?)"/si;
  5. $$warningValue = $1;
  6. m/<input.*?name="thresholdLicenseUsageCritical".*?value="(.*?)"/si;
  7. $$criticalValue = $1;
  8. print "le niveau d'alerte est a : ".$$warningValue." %\n";
  9. print "le niveau critique est fixe a : ".$$criticalValue." %\n";
  10. print "\n\n";
  11.  
  12.    return ($$warningValue,$$criticalValue);


 
je cherche mais ne trouve pas comment, résoudre ce problème.
 
Gilou, j'ai testé le code que tu m'as donné  

Code :
  1. my $warningValue; 
  2. my $criticalValue; 
  3. &variables_formulaire(\$warningValue, \$criticalValue);


 
mais j'ai l'erreur, avec UFT-8...

mood
Publicité
Posté le 04-06-2008 à 11:15:37  profilanswer
 

n°1741260
gilou
Modérateur
Modosaurus Rex
Posté le 04-06-2008 à 11:59:46  profilanswer
 

Comme je te l'ai déja dit, il faut vraiment que tu apprennes le perl.
Programmer a l'aveuglette comme tu le fais, ca fait qu'au final tu passes des semaines sur quelque chose qui ne devrait prendre que quelques heures.
 
Si je comprends vaguement quelque chose ici, ca devrait être le corps de la procedure variables_formulaire que tu donnes:

Citation :

my $warningValue;
my $criticalValue;
$_ = $response->content;
m/<input.*?name="thresholdLicenseUsageWarning".*?value="(.*?)"/si;
$$warningValue = $1;
m/<input.*?name="thresholdLicenseUsageCritical".*?value="(.*?)"/si;
$$criticalValue = $1;
 
 
print "le niveau d'alerte est a : ".$$warningValue." %\n";
print "le niveau critique est fixe a : ".$$criticalValue." %\n";
print "\n\n";
 
 
   return ($$warningValue,$$criticalValue);


 
Bon, c'est bien sur faux.
 
En entrée on a quoi? $response->content
En sortie on a $warningValue, et $criticalValue.
 
Donc déja, la procédure va prendre $response->content en entré, les effets de bord, c'est mal, quand il n'y a aucune raison spécifique a leur emploi.
Et elle va donner $warningValue, et $criticalValue en sortie.
 
$response->content  est relativement gros, donc on va le passer par reference:  
variables_formulaire(\$response->content, ...)
Pour $warningValue, et $criticalValue qui sont de petites valeurs numeriques, un passage par copie n'est pas couteux.
Donc on peux soit les passer par reference:
my ($warningValue, $criticalValue);  
variables_formulaire(\$response->content,  \$warningValue, \$criticalValue);  
soit les recuperer par copie au retour de la procedure:
my ($warningValue, $criticalValue) = variables_formulaire(\$response->content);
cette seconde methode est plus nette dans ce cas, et je vais la choisir.
Ca donne alors:

Code :
  1. sub variables_formulaire {
  2. #peut être y a t'il des choses avant vu que dis que c'est la fin de la procedure
  3. my ($warningValue, $criticalValue);
  4. my $data = shift;
  5. $$data =~ m/\<input.*?name=\"thresholdLicenseUsageWarning\".*?value=\"([^"]+)\"/si;
  6. $warningValue = $1;
  7. $$data =~ m/\<input.*?name=\"thresholdLicenseUsageCritical\".*?value=\"([^"]+)\"/si;
  8. $criticalValue = $1;
  9. print "le niveau d'alerte est a : ".$warningValue." %\n";
  10. print "le niveau critique est fixe a : ".$criticalValue." %\n";
  11. print "\n\n";
  12. return ($warningValue, $criticalValue);
  13. }


 
Tes expressions reguliereres etaient totallement fausses, vu l'emploi direct de caracteres qui ont un sens spécial dans les expressions regulieres comme < ou ".
Enfin, ce que tu voulais matcher par (.*?) c'est mauvais pour plusieurs raisons:  
*? c'est *, le ? est inutile ici. donc (.*?) ca fait (.*)
(.*?) va matcher tout sauf un \n. ca va donc matcher un "  (le fait de mettre un " apres le (.*?) ne joue pas ici: en perl, les expressions regulieres prennent le maximum de ce qu'elles peuvent. ca va donc matcher tout jusqu'au dernier " de $response->content  et non pas s'arreter au premier ". Pour s'arreter, il fut dire explicitement de matcher tout sauf un ", d'ou [^"]+

[^"]+ est plus efficace qu"un non-greedy match lorsqu'on s'arrete a la premiere rencontre du caractere "
 
A+,

Message cité 1 fois
Message édité par gilou le 04-06-2008 à 12:36:55

---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741262
Elmoricq
Modérateur
Posté le 04-06-2008 à 12:00:44  profilanswer
 

À ce stade, je ne saurais trop conseiller une étude intensive de la documentation librement disponible sur le site officiel de PERL : http://perldoc.perl.org


Message édité par Elmoricq le 04-06-2008 à 12:00:51
n°1741290
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-06-2008 à 12:20:54  profilanswer
 

gilou a écrit :

Enfin, ce que tu voulais matcher par (.*?) c'est mauvais pour plusieurs raisons:
*? c'est *, le ? est inutile ici. donc (.*?) ca fait (.*)
(.*?) va matcher tout sauf un \n. ca va donc matcher un "  (le fait de mettre un " apres le (.*?) ne joue pas ici: en perl, les expressions regulieres prennent le maximum de ce qu'elles peuvent. ca va donc matcher tout jusqu'au dernier " de $response->content  et non pas s'arreter au premier ". Pour s'arreter, il fut dire explicitement de matcher tout sauf un ", d'ou [^"]+
A+,


[:cupra] Y'a boulette dans l'explication là...

 

le ? après un quantifier (*,+, ?, {...}) transforme la recherche en "non-greedy" , il n'a pas le même sens que  derrière un autre caractère où il equivaut alors à {0,1} .

 

Donc ces regexs étaient bonnes :o ( mais les tiennes le sont également).
Mais il me semble dangereux de mettre un + car si le motif est value="" ça va rien matcher du tout.

Message cité 1 fois
Message édité par anapajari le 04-06-2008 à 12:21:27

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1741292
yuxi
Posté le 04-06-2008 à 12:22:20  profilanswer
 

ça veut dire quoi subroutine Undifine &main:: ... ?

n°1741300
gilou
Modérateur
Modosaurus Rex
Posté le 04-06-2008 à 12:32:07  profilanswer
 

anapajari a écrit :


[:cupra] Y'a boulette dans l'explication là...
 
le ? après un quantifier (*,+, ?, {...}) transforme la recherche en "non-greedy" , il n'a pas le même sens que  derrière un autre caractère où il equivaut alors à {0,1} .  
 
Donc ces regexs étaient bonnes :o ( mais les tiennes le sont également).
Mais il me semble dangereux de mettre un + car si le motif est value="" ça va rien matcher du tout.

Certes, mais je connais ses données, et elle ne le teste pas de toute facon...
 
Pour le ?, oui, c'est juste, je n'emploie jamais ca ou presque, alors j'ai tendance a oublier (et a melanger cela avec la maniere dont ca marche dans les XML schémas) Mea Culpa [:sicarius] .
A+,

Message cité 1 fois
Message édité par gilou le 04-06-2008 à 13:39:37

---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741301
gilou
Modérateur
Modosaurus Rex
Posté le 04-06-2008 à 12:33:24  profilanswer
 

yuxi a écrit :

ça veut dire quoi subroutine Undifine &main:: ... ?


Tu appelles un subroutine pas definie. Une histoire de nom ou de proto?
A+,


Message édité par gilou le 04-06-2008 à 12:33:41

---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741346
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-06-2008 à 14:08:30  profilanswer
 

gilou a écrit :

Certes, mais je connais ses données, et elle ne le teste pas de toute facon...


tout à fait, je donnais juste mon point de vue  :o

gilou a écrit :

Pour le ?, oui, c'est juste, je n'emploie jamais ca ou presque, alors j'ai tendance a oublier (et a melanger cela avec la maniere dont ca marche dans les XML schémas) Mea Culpa [:sicarius] .
A+,


C'est ballot, je trouve justement que c'est une des force des regexs PCRE par rapport aux POSIX, mais bon les goûts et les couleurs.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1741368
gilou
Modérateur
Modosaurus Rex
Posté le 04-06-2008 à 14:33:44  profilanswer
 

J'ai toujours eu l'impression que si le contexte a droite était compliqué, l'algo de match devenait beaucoup moins efficace, et comme dans une majorite de cas, il est facile de faire une expression reguliere greedy équivalente...
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741380
Elmoricq
Modérateur
Posté le 04-06-2008 à 14:42:00  profilanswer
 

Ah ben je l'utilise très souvent l'opérateur de gourmandise, moi, comme anapajari je trouve que c'est l'un des gros plus du PCRE.

n°1741414
yuxi
Posté le 04-06-2008 à 15:19:08  profilanswer
 

Can't use string ("
<!-- Added for UTF-8 page enco" ) as an ARRAY ref while "strict refs" in use at tab.pl line
 
ça veur dire quoi ça ? c'est un problème de reference...

n°1741418
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-06-2008 à 15:23:33  profilanswer
 

ça veut dire que tu passes une chaine de caractère à un endroit où il attend une référence sur un tableau!
Montre nous la ligne qui correspond à l'erreur.


Message édité par anapajari le 04-06-2008 à 15:24:01

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1741423
yuxi
Posté le 04-06-2008 à 15:29:31  profilanswer
 

#juste avant, j'ai l'appel de ma fonction, et dans le si, j'utilise une valeur de ma fonction.
 
if (@$_[6] < $warningValue) {

n°1741428
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-06-2008 à 15:35:38  profilanswer
 

a cet endroit dans ton script $_ n'est pas un tableau mais une chaine de caractère qui commence par "<!-- Added for UTF-8 page enco..." [:spamafote]

 

edit: au pif je dirais que c'est ton content


Message édité par anapajari le 04-06-2008 à 15:36:10

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1741437
yuxi
Posté le 04-06-2008 à 15:42:38  profilanswer
 

bizarre...

n°1741442
gilou
Modérateur
Modosaurus Rex
Posté le 04-06-2008 à 15:49:32  profilanswer
 

Pas bizarre du rout:
if (@$_[6] != $alerte[0]->[0])  
@alerte est defini comme un tableau contenant deux valeurs qui sont des scalaires, c'est donc tres clair.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741443
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-06-2008 à 15:55:35  profilanswer
 

nan pas bizarre ... $_ est une variable "générique" qui peut être modifiée par énormément de chose.
Tu as d'ailleurs un exemple dans la doc.
Par contre plutôt que d'utiliser local qui est une infamie, je te recommanderai de nommer ta variable à sa 1ere utilisation.
edit: ça plus  ce que dit Gilou :o


Message édité par anapajari le 04-06-2008 à 15:56:31

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1741844
yuxi
Posté le 05-06-2008 à 11:57:54  profilanswer
 

voici un message d'erreur :
 
Can't use an undefined value as a SCALAR reference at...
 

n°1741849
yuxi
Posté le 05-06-2008 à 12:03:36  profilanswer
 

Code :
  1. my $warningValue; 
  2. my $criticalValue; 
  3. &variables_formulaire(\$warningValue, \$criticalValue); 
  4. if (@$_[6] == $warningValue) {


 
voilà, lorsque je If (  @....) n'est pas là, L'appel de ma fonctionne fonctionne correctement, et m'affiche mes valeurs... Mais lorsque je raconte mon if(@...), il me met un message d'erreur... (mais j'en ai absoluement besoin, c'est pour envoyer mes mails...)
 
code d'erreur :

Code :
  1. le niveau d'alerte est a : 75 %
  2. le niveau critique est fixe a : 90 %
  3. Can't use string ("
  4. <!-- Added for UTF-8 page enco" ) as an ARRAY ref while "strict refs" in use at blabla.pl l
  5. ine 101.


 
la ligne 101 correspond au if.

n°1741909
gilou
Modérateur
Modosaurus Rex
Posté le 05-06-2008 à 13:45:36  profilanswer
 

Tu comprends le message d'erreur et de quelle variable il se plaint?
Si oui, tu comprendras qu'on ne puisse repondre a ta question, vu l'insuffisance des informations que tu donnes.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741914
yuxi
Posté le 05-06-2008 à 13:48:25  profilanswer
 

je ne comprend pas bien, non, sinon j'aurais peut etre pu le resoudre depuis, je l'ai cette erreur...et que j'en parle...

n°1741929
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-06-2008 à 13:56:53  profilanswer
 

gilou a écrit :

Pas bizarre du rout:
if (@$_[6] != $alerte[0]->[0])  
@alerte est defini comme un tableau contenant deux valeurs qui sont des scalaires, c'est donc tres clair.
A+,


C'est tout bien expliqué là ce qui ne va pas ...
 


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1741967
yuxi
Posté le 05-06-2008 à 14:53:36  profilanswer
 

Moi ça ne me parle pas...
 
et puis, j'ai testé le retour de mes variable avant le if, avec un print $$ ma variable, et cela fonctionne tres bien ! il me les affiches,
 
mais le IF... bah non, ça marche pas, j'ai remplacé ces variables par 0==0 et il me mais la même erreur pour une ligne plus bas où il y a:
 
my $msg = new MIME::Lite  
 
alors que ce code marchait tres bien avant...

n°1741983
yuxi
Posté le 05-06-2008 à 15:09:40  profilanswer
 

ce code ci fonctionne tres bien !
 

Code :
  1. my ($warningValue, $criticalValue) = variables_formulaire(); 
  2.  
  3. print $$warningValue.' '.$$criticalValue."\n";
  4. print "\n\n";
  5. my $var2 = $$criticalValue;
  6. my $var = $$warningValue ;
  7. my $var3 = "80";
  8. if ($var < $var3) {
  9.  print "le niveau critique $var est inferieur a $var3 ! \n\n"}
  10. else {
  11.  print "le niveau critique $var2 est superieur a $var3 ! \n\n"}


 
il m'affiche ceci :

Code :
  1. le niveau d'alerte est a : 75 %
  2. le niveau critique est fixe a : 90 %
  3. 75 90
  4. le niveau critique 75 est inferieur a 80 !


 
c'est bien ce que j'ai demandé avec les bonnes valeurs...
 
donc j'en conclu que c'est dans le mail... que ça ne marche pas...
 
donc je vous presente mon code pour le mail :
 

Code :
  1. if (@$_[6] == $var) {
  2.  MIME::Lite->send("smtp", $ServeurSMTP, Timeout=>60);
  3.  my $msg = new MIME::Lite
  4.             From    =>$mailfrom,
  5.             To      =>$mailto,         
  6.             Subject =>'ATTENTION',
  7.             Type    =>'TEXTE', 
  8.   Encoding =>'base64',
  9.             Data    =>"petit test... realise par No Future ! Attention vous avez atteint le niveau d'alerte actuellement de 0%! Votre pourcentage de licence utilise est de : @$_[6] %";
  10.  $msg -> send;
  11.  print "message bien envoye ! \n\n"}


 
voilà... j'ai en module :
 
use warnings;
use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
use HTTP::Status;
use MIME::Lite;
use Encode;
 
merci d'essayer de trouver ce qui ne va pas !

n°1741986
gilou
Modérateur
Modosaurus Rex
Posté le 05-06-2008 à 15:13:48  profilanswer
 

anapajari a écrit :


C'est tout bien expliqué là ce qui ne va pas ...
 

elle a modifié et teste sur un scalaire maintenant
if (@$_[6] == $warningValue)
ce qui est bon a priori
Donc je suppose que si le message d'erreur perdure avec un scalaire, c'est que @$_[6] n'est plus valable, mais comme on ne sait pas a ce stade comment est assigné $_, vu le petit bout de code ne donnant pas du tout le contexte, il n'y a pas de risque qu'on puisse repondre.
 
A+,
 


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1741992
gilou
Modérateur
Modosaurus Rex
Posté le 05-06-2008 à 15:18:10  profilanswer
 

Citation :

my ($warningValue, $criticalValue) = variables_formulaire();  
 
print $$warningValue.' '.$$criticalValue."\n";

Sauf que si ca marche la, c'est que tu ne fais pas ce qu'il faut correctement dans variables_formulaire.
En effet, tu definis des scalaires.
Au retour de la fonction, ce devrait donc etre des scalaires et non pas des references sur des scalaires qui devraient etre retournés.
Comme je l'ai dit, sans voir plus de code...
A+,


Message édité par gilou le 05-06-2008 à 15:18:57

---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1742005
yuxi
Posté le 05-06-2008 à 15:30:18  profilanswer
 

j'ai corrigé la syntaxe de min if, dans lequel il manquait des parenthèses...  
 

n°1742007
yuxi
Posté le 05-06-2008 à 15:32:06  profilanswer
 

les $$ d'apres les cours, déréférence.. et non référence...
 
sinon voici ce qu'il y avait avant :
 
   }
        if (/\<\/tr>/ and $startvector and not $endtable) {
            push @data, $vector;
            $startvector = 0;
        }
    }
}
 
foreach (@data) {
     
  print @$_[0],"  ",@$_[1],"  ",@$_[2],"  ",@$_[3],"  ",@$_[4],"  ",@$_[5],"  ",@$_[6],"\n";
  }
   
print "\n\n";
 
tu devrais reconnaître ce bout de code.

n°1742019
gilou
Modérateur
Modosaurus Rex
Posté le 05-06-2008 à 15:40:43  profilanswer
 

Oui, mais une fois que tu es sortie de la boucle foreach (@data) {...}
$_ n'est plus en contexte, et donc @$_[0],...@$_[6], ne designent plus des expressions valides.
Copier coller un bout de code, c'est bien, mais encore faut il le comprendre.
A+,
 


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°1742023
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-06-2008 à 15:43:03  profilanswer
 

Mais vire moi ces @ devant tes $_[.] !!!
A chaque itération du foreach, ton $_ est un pointeur sur un tableau .
Pour le déréférencer, il vaut mieux utiliser $ ( comme tu le dit toi même ) et non @.
Par ailleurs, je t'ai dit de nommer tes variables ça serait quand même plus clair!

Code :
  1. foreach my $v(@data){
  2.  print $$v[0], ..., $$v[6];
  3.  # autre écriture pour bien voir la référence:
  4.  print  $v->[0], ... , $v->[6];
  5. }


Message cité 1 fois
Message édité par anapajari le 05-06-2008 à 15:45:06

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1742025
gilou
Modérateur
Modosaurus Rex
Posté le 05-06-2008 à 15:43:20  profilanswer
 

Citation :

les $$ d'apres les cours, déréférence.. et non référence...

Oui, mais quand on dereference quelque chose, encore faudrait il l'avoir defini comme une reference.
La, sans le code de variables_formulaire sous les yeux, personne ne peut savoir que tu as rempli $warningValue et $criticalValue par des references, surtout que dans ce contexte, ça ne s'impose pas.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [perl] formulaire

 

Sujets relatifs
[PHP/MYSQL] Formulaire auto-updaté-Résolu- Formulaire en fin de page...qui ne s'affiche pas
Menu déroulant sous forme de formulaire pour firefoxpb formulaire html recuperer données avc perl/cgi ou c++
Formulaire Perl/CGI générant du XMLproblème avec mon formulaire perl/cgi (debutant)
[PERL] [CGI] Recherche a partir de données d'un formulaireRecup. de données avec un formulaire puis traitement avec Perl
[Perl] Probleme de formulaire en post[CGI / Perl / ??] Récupérer l'IP dans un formulaire Perl
Plus de sujets relatifs à : [perl] formulaire


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)