Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

variable en my identique

2 réponses
Avatar
Newsgroups
Bonjour,

Je pense que j'ai rat=E9 quelque chose... (peut =EAtre me suis-lev=E9 du
mauvais pied !).

Bon, en gros, j'ai une variable que j'initialise avec my pour instancier
une librairie. Or elle est toujours identique, entre chaque passage sur
l'instanciation... cel=E0 me gene beaucoup car je me retrouve avec un seul
objet...

Voici le bout de code que j'ai :


while (1) {
ma_fonction();
}

sub ma_fonction() {
my $h =3D new h_package();
print $h."\n"; # change =E0 chaque appel : ok
if ($h->get()) {
my $s =3D new s_package();
print $s."\n"; # <=3D affiche toujours s_package=3DHASH(0x8c2a938)
}
}

2 réponses

Avatar
Paul Gaborit
À (at) Thu, 25 Oct 2007 20:11:29 +0200,
Newsgroups écrivait (wrote):
Bon, en gros, j'ai une variable que j'initialise avec my pour instancier
une librairie. Or elle est toujours identique, entre chaque passage sur
l'instanciation... celà me gene beaucoup car je me retrouve avec un seul
objet...

Voici le bout de code que j'ai :


while (1) {
ma_fonction();
}

sub ma_fonction() {
my $h = new h_package();
print $h."n"; # change à chaque appel : ok
if ($h->get()) {
my $s = new s_package();
print $s."n"; # <= affiche toujours s_package=HASH(0x8c2a938)
}
}



C'est quoi ces trucs 'h_package' et 's_package' ? Des packages ? Des
fonctions ? Si ce sont des fonctions, que contiennent-elles et comment
est écrit la fonction 'new' ? Si ce sont des packages, pourquoi
n'ont-ils par leur nom qui commence par une majuscule comme l'exige
les conventions d'écriture du code Perl ? Et pouquoi ne pas utiliser
la syntaxe d'appel direct qui est plus claire :

my $h = H_package->new();
...
my $s = S_package->new();

Ensuite, le fait que le résultat retourné par 'new' soit différent ou
non à chaque appel dépend uniquement de la manière dont la fonction ou
les méthodes 'new' sont écrites...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Newsgroups
C'est quoi ces trucs 'h_package' et 's_package' ? Des packages ?


oui, ce sont des packages..

Si ce sont des packages, pourquoi n'ont-ils par leur nom qui commence
par une majuscule comme l'exige les conventions d'écriture du code
Perl ?
désolé, je suis pas (encore) puriste... j'en suis au début du script et

il vaut mieux prendre les bonnes habitudes dès maintenant. :-)


Et pouquoi ne pas utiliser
la syntaxe d'appel direct qui est plus claire :

my $h = H_package->new();
...
my $s = S_package->new();


je m'étais posé la question, mais comme les 2 semblent avoir le même
effet..., mais bon, j'ai fait comme précédemment, je vous fait
confiance. :-)


Ensuite, le fait que le résultat retourné par 'new' soit différent ou
non à chaque appel dépend uniquement de la manière dont la fonction ou
les méthodes 'new' sont écrites...


Ah, ben oui, nous en venons à mon problème...
je faisait des my $xxx; avant de faire le package H_package; au lieu de
les mettre dans ma méthode de création (new)...

du coup ca me donne un résultat tout à fait pertinent. c'est ce que je
voulais. :-)

Merci