declaration d'une globale [PERL] - Perl - Programmation
Marsh Posté le 14-02-2003 à 17:53:49
circeedevalette a écrit : salut les amis |
Rien a faire sur Java mais bon...
En perl les variables globales sont declarees comme suit :
Code :
|
A+
Marsh Posté le 14-02-2003 à 21:06:02
circeedevalette a écrit : salut les amis |
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.
Marsh Posté le 17-02-2003 à 09:24:56
phenixl a écrit : |
desolé, la section java est juste au dessus de la section perl dans le combobox est mon doigt a sans doute rippé
Marsh Posté le 17-02-2003 à 09:28:31
Angel_Dooglas 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
Marsh Posté le 17-02-2003 à 10:44:58
circeedevalette 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 :
|
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 ?
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.
|
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);
Marsh Posté le 17-02-2003 à 13:26:18
circeedevalette a écrit : |
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.
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.
|
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
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
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
- 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