[PERL] declaration d'une globale

declaration d'une globale [PERL] - Perl - Programmation

Marsh Posté le 14-02-2003 à 16:37:23    

salut les amis
 
comment on fait pour declarer une globale en perl  
avec l'option 'use strict'
 
pour info, normalement j'utilise my $toto dans la fonction de haut niveau
mais là, je suis dans une sub et je veut declarer une variable qui soit visible depuis une autre sub
je ne peut pas la declarer avec un my comme enonce plus haut,
et si je ne declare pas ma variable le compilo gueule et ne veut pas executer mon code
(plus de pb sans le 'use strict' mais je prefere l'utiliser)
 
 
PS: j'ai declaré ma variable en 'our' mais  :non:  
- soit j'ai pas compris comme marche 'our'
- soit ca ne regle pas mon probleme
 
bien amicalement


Message édité par circeedevalette le 17-02-2003 à 09:16:09
Reply

Marsh Posté le 14-02-2003 à 16:37:23   

Reply

Marsh Posté le 14-02-2003 à 17:53:49    

circeedevalette a écrit :

salut les amis
 
comment on fait pour declarer une globale en perl  
avec l'option 'use strict'
 
pour info, normalement j'utilise my $toto dans la fonction de haut niveau
mais là, je suis dans une sub et je veut declarer une variable qui soit visible depuis une autre sub
je ne peut pas la declarer avec un my comme enonce plus haut,
et si je ne declare pas ma variable le compilo gueule et ne veut pas executer mon code
(plus de pb sans le 'use strict' mais je prefere l'utiliser)
 
 
PS: j'ai declaré ma variable en 'our' mais  :non:  
- soit j'ai pas compris comme marche 'our'
- soit ca ne regle pas mon probleme
 
bien amicalement  
 


 
Rien a faire sur Java mais bon...  
 
En perl les variables globales sont declarees comme suit :
 

Code :
  1. $mavariable;


 
A+

Reply

Marsh Posté le 14-02-2003 à 21:06:02    

circeedevalette a écrit :

salut les amis
 
comment on fait pour declarer une globale en perl  
avec l'option 'use strict'
 
pour info, normalement j'utilise my $toto dans la fonction de haut niveau
mais là, je suis dans une sub et je veut declarer une variable qui soit visible depuis une autre sub
je ne peut pas la declarer avec un my comme enonce plus haut,
et si je ne declare pas ma variable le compilo gueule et ne veut pas executer mon code
(plus de pb sans le 'use strict' mais je prefere l'utiliser)
 
 
PS: j'ai declaré ma variable en 'our' mais  :non:  
- soit j'ai pas compris comme marche 'our'
- soit ca ne regle pas mon probleme
 
bien amicalement  
 


 
Deja ca ne va produire du code tres lisible, ensuite si tu veux l'utiliser dans une fonction, passe la en argument. Enfin si tu veux faire une globale, ne la place pas dans un bloc, en particulier un bloc de fonction.


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 17-02-2003 à 09:24:56    

phenixl a écrit :


 
Rien a faire sur Java mais bon...  
 


 
desolé, la section java est juste au dessus de la section perl dans le combobox est mon doigt a sans doute rippé

Reply

Marsh Posté le 17-02-2003 à 09:28:31    

Angel_Dooglas a écrit :


 
Deja ca ne va produire du code tres lisible, ensuite si tu veux l'utiliser dans une fonction, passe la en argument. Enfin si tu veux faire une globale, ne la place pas dans un bloc, en particulier un bloc de fonction.


 
le pb c'est que je veux declarer des variables dans un "for"
 
for ($F=0;$F<=$Nombre_Module;$F++)
{
  my $Nom_Bouton1 = '$Checkbutton_'.$F;
}
 
mais de cette facon, le nom de mon bouton est inconnu en dehors de ma boucle for
 
PS : faudrait faire le return dans la boucle for mais j'aime pas trop

Reply

Marsh Posté le 17-02-2003 à 10:44:58    

circeedevalette a écrit :


 
le pb c'est que je veux declarer des variables dans un "for"
 
for ($F=0;$F<=$Nombre_Module;$F++)
{
  my $Nom_Bouton1 = '$Checkbutton_'.$F;
}
 
mais de cette facon, le nom de mon bouton est inconnu en dehors de ma boucle for
 
PS : faudrait faire le return dans la boucle for mais j'aime pas trop

Non, déclare ta variable $Nom_Bouton1 en dehors de toute fonction, au début de ton script Perl.
 
Je n'ai pas capté ta syntaxe là :
 

Code :
  1. my $Nom_Bouton1 = '$Checkbutton_'.$F;


 
On ne s'occupe plus du "my" vu que la var sera déclarée ailleurs mais c'est la suite qui m'interpelle, principalement '$Checkbutton_'.$F;
 
Au 1er passage de la boucle for, $F vaut 0 et $Nom_Bouton1 va recevoir une chaîne correspondant à "$Checkbutton_0", c'est bien ça que tu cherches à obtenir ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 17-02-2003 à 13:18:02    

Aricoh a écrit :

Non, déclare ta variable $Nom_Bouton1 en dehors de toute fonction, au début de ton script Perl.
 
Je n'ai pas capté ta syntaxe là :
 

Code :
  1. my $Nom_Bouton1 = '$Checkbutton_'.$F;


 
On ne s'occupe plus du "my" vu que la var sera déclarée ailleurs mais c'est la suite qui m'interpelle, principalement '$Checkbutton_'.$F;
 
Au 1er passage de la boucle for, $F vaut 0 et $Nom_Bouton1 va recevoir une chaîne correspondant à "$Checkbutton_0", c'est bien ça que tu cherches à obtenir ?


 
en fait, je veux utiliser le package JComboBox :
http://search.cpan.org/src/RCS/Tk- [...] orial.html
 
avec ce package on peut creer un combobox
$ComboBox = $MW -> JComboBox();
puis recuperer, la valeur selectionné dans le combobox
(en fait l'index, puis la valeur)
avec les methodes :
  my $index = $ComboBox -> getSelectedIndex();
  my $name  = $ComboBox -> getItemNameAt($index);

Reply

Marsh Posté le 17-02-2003 à 13:26:18    

circeedevalette a écrit :


 
en fait, je veux utiliser le package JComboBox :
http://search.cpan.org/src/RCS/Tk- [...] orial.html
 
avec ce package on peut creer un combobox
$ComboBox = $MW -> JComboBox();
puis recuperer, la valeur selectionné dans le combobox
(en fait l'index, puis la valeur)
avec les methodes :
  my $index = $ComboBox -> getSelectedIndex();
  my $name  = $ComboBox -> getItemNameAt($index);
 

si tu déclares toutes tes variables dédiées à tes objets Tk de manière globale (pas dans une fonction), tu n'auras pas de problèmes. Ce sont des objets, pour résumer au max des références. Donc, si tu veux modifier un objet via fonction, c'est sa référence qui sera modifiée au sein de la fonction, donc tout roule. SAUF si tu déclares ton objet dans la fonction.


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 17-02-2003 à 13:41:50    

Aricoh a écrit :

Non, déclare ta variable $Nom_Bouton1 en dehors de toute fonction, au début de ton script Perl.
 
Je n'ai pas capté ta syntaxe là :
 

Code :
  1. my $Nom_Bouton1 = '$Checkbutton_'.$F;


 
On ne s'occupe plus du "my" vu que la var sera déclarée ailleurs mais c'est la suite qui m'interpelle, principalement '$Checkbutton_'.$F;
 
Au 1er passage de la boucle for, $F vaut 0 et $Nom_Bouton1 va recevoir une chaîne correspondant à "$Checkbutton_0", c'est bien ça que tu cherches à obtenir ?


 
desolé c'est vrai que mon exemple ne marche pas
 
en fait, je veux utiliser le package JComboBox trouvé sur cpan :
http://search.cpan.org/src/RCS/Tk- [...] orial.html
 
avec ce package on peut creer un combobox
  $ComboBox = $MW -> JComboBox(-selectcommand =>sub{affiche();});
 
puis recuperer, la valeur selectionné dans le combobox
(en fait l'index, puis la valeur)
avec les methodes :
sub affiche
{
  my $index = $ComboBox -> getSelectedIndex();
  my $name  = $ComboBox -> getItemNameAt($index);
}
 
mon probleme, c'est que je veux créer un nombre indefini de combobox.  
ce nombre est le nb d'element d'un tableau affecté dans une fonction precedente
 
comme je ne connait pas le nombre d'element dans ce tableau au debut de mon programme, je ne peut pas declarer mes globales au debut
 


---------------
Tavernier! j'ai soif de la vie, qu'on m'en apporte
Reply

Marsh Posté le 17-02-2003 à 13:46:27    

en fait, en meme temps que je te repondais j'ai trouvé ma solution
 
les jcombobox ont une option : -textVariable avec laquelle on peut  recuperer la valeur selectionné
 
du coup, je declare au debut de mon prog un tableau @Valeur
 
je fais ma boucle for
 
  for (my $k = 0;$k < 3;$k++)
  {
     $ComboBox = $OneReq_frame -> JComboBox(-selectcommand => sub{affiche();},
                                              -gap => '10',
                                              -relief => 'sunken',
                                              -textvariable => \$value[$k],
                                              -popuprelief => 'groove',
                                              -listbackground => 'white',
                                              -highlightthickness => 0,
                                              -choices => [qw/Suppression ReqPro Nouveau Scade/]
                                             ) -> pack(-side => 'left',-padx => 10);
 
  }
 
avec chaque combo qui remplit sa case correspondante dans le tableau @valeur
 
du coup, dans mon autre fonction il suffit de lire la bonne case de ce tableau


---------------
Tavernier! j'ai soif de la vie, qu'on m'en apporte
Reply

Sujets relatifs:

Leave a Replay

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