Bonjour à tous,
Je sais que je suis hors sujet mais j'ai un petit problème avec un
script perl.
Ce script est chargé de vérifier si j'ai des messages de mes amis.
tout fonctionne bien, sauf que, à la première vérification, le script
m'affiche une fois que j'ai un message (quand j'en ai un). A la
deuxième vérification, le script me dit *deux* fois que j'ai un message
(et je n'ai qu'un message !). A la troisième vérif : *trois* fois la
même chose, etc.
Il y a donc quelque chose de mal écrit, mais je n'arrive pas à trouver
quoi...
Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
#---------------------------------------
# Variables globales
#----------------------------------------
my $xdlg = "/usr/bin/zenity";
my $pop;
my $i;
my $nom;
my @amis;
sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."n";
}
while (1) {
connection;
read_data;
Bonjour à tous,
Je sais que je suis hors sujet mais j'ai un petit problème avec un
script perl.
Ce script est chargé de vérifier si j'ai des messages de mes amis.
tout fonctionne bien, sauf que, à la première vérification, le script
m'affiche une fois que j'ai un message (quand j'en ai un). A la
deuxième vérification, le script me dit *deux* fois que j'ai un message
(et je n'ai qu'un message !). A la troisième vérif : *trois* fois la
même chose, etc.
Il y a donc quelque chose de mal écrit, mais je n'arrive pas à trouver
quoi...
Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
#---------------------------------------
# Variables globales
#----------------------------------------
my $xdlg = "/usr/bin/zenity";
my $pop;
my $i;
my $nom;
my @amis;
sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."n";
}
while (1) {
connection;
read_data;
Bonjour à tous,
Je sais que je suis hors sujet mais j'ai un petit problème avec un
script perl.
Ce script est chargé de vérifier si j'ai des messages de mes amis.
tout fonctionne bien, sauf que, à la première vérification, le script
m'affiche une fois que j'ai un message (quand j'en ai un). A la
deuxième vérification, le script me dit *deux* fois que j'ai un message
(et je n'ai qu'un message !). A la troisième vérif : *trois* fois la
même chose, etc.
Il y a donc quelque chose de mal écrit, mais je n'arrive pas à trouver
quoi...
Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
#---------------------------------------
# Variables globales
#----------------------------------------
my $xdlg = "/usr/bin/zenity";
my $pop;
my $i;
my $nom;
my @amis;
sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."n";
}
while (1) {
connection;
read_data;
Le mercredi 11 octobre 2006 Ã 15:12 +0200, Nicolas Roudninski a
écrit :
> Bonjour à tous,
>
> Je sais que je suis hors sujet mais j'ai un petit problème avec un
> script perl.
> Ce script est chargé de vérifier si j'ai des messages de mes amis.
> tout fonctionne bien, sauf que, à la première vérificati on, le
> script m'affiche une fois que j'ai un message (quand j'en ai un). A
> la deuxième vérification, le script me dit *deux* fois que j' ai un
> message (et je n'ai qu'un message !). A la troisième vérif :
> *trois* fois la même chose, etc.
>
> Il y a donc quelque chose de mal écrit, mais je n'arrive pas Ã
> trouver quoi...
>
> Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
[...]
> #---------------------------------------
> # Variables globales
> #----------------------------------------
> my $xdlg = "/usr/bin/zenity";
> my $pop;
> my $i;
> my $nom;
> my @amis;
[...]
>
> sub read_data {
> open DATAFILE, "$home_dir/amis.dat"
> or die "Fichier introuvable !";
> while (<DATAFILE>) {
> chomp;
> push @amis, $_."n";
> }
[...]
> while (1) {
> connection;
> read_data;
[...]
C'est normal que tu _rajoutes_ tes amis dans le tableau @amis à chaq ue
itération ? A la fin tu dois en avoir des amis :-)
Juste une remarque, évite d'avoir autant de variables globales;
pourquoi ne pas passer des paramètres aux fonctions ?
Greg
Le mercredi 11 octobre 2006 Ã 15:12 +0200, Nicolas Roudninski a
écrit :
> Bonjour à tous,
>
> Je sais que je suis hors sujet mais j'ai un petit problème avec un
> script perl.
> Ce script est chargé de vérifier si j'ai des messages de mes amis.
> tout fonctionne bien, sauf que, à la première vérificati on, le
> script m'affiche une fois que j'ai un message (quand j'en ai un). A
> la deuxième vérification, le script me dit *deux* fois que j' ai un
> message (et je n'ai qu'un message !). A la troisième vérif :
> *trois* fois la même chose, etc.
>
> Il y a donc quelque chose de mal écrit, mais je n'arrive pas Ã
> trouver quoi...
>
> Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
[...]
> #---------------------------------------
> # Variables globales
> #----------------------------------------
> my $xdlg = "/usr/bin/zenity";
> my $pop;
> my $i;
> my $nom;
> my @amis;
[...]
>
> sub read_data {
> open DATAFILE, "$home_dir/amis.dat"
> or die "Fichier introuvable !";
> while (<DATAFILE>) {
> chomp;
> push @amis, $_."n";
> }
[...]
> while (1) {
> connection;
> read_data;
[...]
C'est normal que tu _rajoutes_ tes amis dans le tableau @amis à chaq ue
itération ? A la fin tu dois en avoir des amis :-)
Juste une remarque, évite d'avoir autant de variables globales;
pourquoi ne pas passer des paramètres aux fonctions ?
Greg
Le mercredi 11 octobre 2006 Ã 15:12 +0200, Nicolas Roudninski a
écrit :
> Bonjour à tous,
>
> Je sais que je suis hors sujet mais j'ai un petit problème avec un
> script perl.
> Ce script est chargé de vérifier si j'ai des messages de mes amis.
> tout fonctionne bien, sauf que, à la première vérificati on, le
> script m'affiche une fois que j'ai un message (quand j'en ai un). A
> la deuxième vérification, le script me dit *deux* fois que j' ai un
> message (et je n'ai qu'un message !). A la troisième vérif :
> *trois* fois la même chose, etc.
>
> Il y a donc quelque chose de mal écrit, mais je n'arrive pas Ã
> trouver quoi...
>
> Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
[...]
> #---------------------------------------
> # Variables globales
> #----------------------------------------
> my $xdlg = "/usr/bin/zenity";
> my $pop;
> my $i;
> my $nom;
> my @amis;
[...]
>
> sub read_data {
> open DATAFILE, "$home_dir/amis.dat"
> or die "Fichier introuvable !";
> while (<DATAFILE>) {
> chomp;
> push @amis, $_."n";
> }
[...]
> while (1) {
> connection;
> read_data;
[...]
C'est normal que tu _rajoutes_ tes amis dans le tableau @amis à chaq ue
itération ? A la fin tu dois en avoir des amis :-)
Juste une remarque, évite d'avoir autant de variables globales;
pourquoi ne pas passer des paramètres aux fonctions ?
Greg
Le Wed, 11 Oct 2006 15:36:14 +0200
Vanuxem Grégory a écrit :
> Le mercredi 11 octobre 2006 à 15:12 +0200, Nicolas Roudninski a
> écrit :
> > Bonjour à tous,
> >
> > Je sais que je suis hors sujet mais j'ai un petit problème avec un
> > script perl.
> > Ce script est chargé de vérifier si j'ai des messages de mes amis.
> > tout fonctionne bien, sauf que, à la première vérification, le
> > script m'affiche une fois que j'ai un message (quand j'en ai un). A
> > la deuxième vérification, le script me dit *deux* fois que j'ai un
> > message (et je n'ai qu'un message !). A la troisième vérif :
> > *trois* fois la même chose, etc.
> >
> > Il y a donc quelque chose de mal écrit, mais je n'arrive pas à
> > trouver quoi...
> >
> > Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
>
> [...]
>
> > #---------------------------------------
> > # Variables globales
> > #----------------------------------------
> > my $xdlg = "/usr/bin/zenity";
> > my $pop;
> > my $i;
> > my $nom;
> > my @amis;
>
> [...]
>
> >
> > sub read_data {
> > open DATAFILE, "$home_dir/amis.dat"
> > or die "Fichier introuvable !";
> > while (<DATAFILE>) {
> > chomp;
> > push @amis, $_."n";
> > }
>
> [...]
>
> > while (1) {
> > connection;
> > read_data;
>
> [...]
>
> C'est normal que tu _rajoutes_ tes amis dans le tableau @amis à chaque
> itération ? A la fin tu dois en avoir des amis :-)
Ben non, c'est pas normal ! Et effectivement, à la fin j'en ai des
amis, mais ce sont toujours les mêmes en plusieurs exemplaires...
Est-ce qu'en simplement fermant DATAFILE à la fin de read_data àa
règlerait le problème ?
>
> Juste une remarque, évite d'avoir autant de variables globales;
> pourquoi ne pas passer des paramètres aux fonctions ?
Oui, tu as raison. Je fais ça parce que au début, je testait plus
qu'autre chose...
Juste une question : pourquoi le fait d'avoir tant de variables
globales pose problème ?
Le Wed, 11 Oct 2006 15:36:14 +0200
Vanuxem Grégory a écrit :
> Le mercredi 11 octobre 2006 à 15:12 +0200, Nicolas Roudninski a
> écrit :
> > Bonjour à tous,
> >
> > Je sais que je suis hors sujet mais j'ai un petit problème avec un
> > script perl.
> > Ce script est chargé de vérifier si j'ai des messages de mes amis.
> > tout fonctionne bien, sauf que, à la première vérification, le
> > script m'affiche une fois que j'ai un message (quand j'en ai un). A
> > la deuxième vérification, le script me dit *deux* fois que j'ai un
> > message (et je n'ai qu'un message !). A la troisième vérif :
> > *trois* fois la même chose, etc.
> >
> > Il y a donc quelque chose de mal écrit, mais je n'arrive pas à
> > trouver quoi...
> >
> > Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
>
> [...]
>
> > #---------------------------------------
> > # Variables globales
> > #----------------------------------------
> > my $xdlg = "/usr/bin/zenity";
> > my $pop;
> > my $i;
> > my $nom;
> > my @amis;
>
> [...]
>
> >
> > sub read_data {
> > open DATAFILE, "$home_dir/amis.dat"
> > or die "Fichier introuvable !";
> > while (<DATAFILE>) {
> > chomp;
> > push @amis, $_."n";
> > }
>
> [...]
>
> > while (1) {
> > connection;
> > read_data;
>
> [...]
>
> C'est normal que tu _rajoutes_ tes amis dans le tableau @amis à chaque
> itération ? A la fin tu dois en avoir des amis :-)
Ben non, c'est pas normal ! Et effectivement, à la fin j'en ai des
amis, mais ce sont toujours les mêmes en plusieurs exemplaires...
Est-ce qu'en simplement fermant DATAFILE à la fin de read_data àa
règlerait le problème ?
>
> Juste une remarque, évite d'avoir autant de variables globales;
> pourquoi ne pas passer des paramètres aux fonctions ?
Oui, tu as raison. Je fais ça parce que au début, je testait plus
qu'autre chose...
Juste une question : pourquoi le fait d'avoir tant de variables
globales pose problème ?
Le Wed, 11 Oct 2006 15:36:14 +0200
Vanuxem Grégory a écrit :
> Le mercredi 11 octobre 2006 à 15:12 +0200, Nicolas Roudninski a
> écrit :
> > Bonjour à tous,
> >
> > Je sais que je suis hors sujet mais j'ai un petit problème avec un
> > script perl.
> > Ce script est chargé de vérifier si j'ai des messages de mes amis.
> > tout fonctionne bien, sauf que, à la première vérification, le
> > script m'affiche une fois que j'ai un message (quand j'en ai un). A
> > la deuxième vérification, le script me dit *deux* fois que j'ai un
> > message (et je n'ai qu'un message !). A la troisième vérif :
> > *trois* fois la même chose, etc.
> >
> > Il y a donc quelque chose de mal écrit, mais je n'arrive pas à
> > trouver quoi...
> >
> > Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
>
> [...]
>
> > #---------------------------------------
> > # Variables globales
> > #----------------------------------------
> > my $xdlg = "/usr/bin/zenity";
> > my $pop;
> > my $i;
> > my $nom;
> > my @amis;
>
> [...]
>
> >
> > sub read_data {
> > open DATAFILE, "$home_dir/amis.dat"
> > or die "Fichier introuvable !";
> > while (<DATAFILE>) {
> > chomp;
> > push @amis, $_."n";
> > }
>
> [...]
>
> > while (1) {
> > connection;
> > read_data;
>
> [...]
>
> C'est normal que tu _rajoutes_ tes amis dans le tableau @amis à chaque
> itération ? A la fin tu dois en avoir des amis :-)
Ben non, c'est pas normal ! Et effectivement, à la fin j'en ai des
amis, mais ce sont toujours les mêmes en plusieurs exemplaires...
Est-ce qu'en simplement fermant DATAFILE à la fin de read_data àa
règlerait le problème ?
>
> Juste une remarque, évite d'avoir autant de variables globales;
> pourquoi ne pas passer des paramètres aux fonctions ?
Oui, tu as raison. Je fais ça parce que au début, je testait plus
qu'autre chose...
Juste une question : pourquoi le fait d'avoir tant de variables
globales pose problème ?
Le mercredi 11 octobre 2006 Ã 16:23 +0200, Nicolas Roudninski a
écrit :
> Le Wed, 11 Oct 2006 15:36:14 +0200
> Vanuxem Grégory a écrit :
>
> > Le mercredi 11 octobre 2006 Ã 15:12 +0200, Nicolas Roudninski a
> > écrit :
> > > Bonjour à tous,
> > >
> > > Je sais que je suis hors sujet mais j'ai un petit problème avec
> > > un script perl.
> > > Ce script est chargé de vérifier si j'ai des messages de mes
> > > amis. tout fonctionne bien, sauf que, à la première
> > > vérification, le script m'affiche une fois que j'ai un message
> > > (quand j'en ai un). A la deuxième vérification, le script me
> > > dit *deux* fois que j'ai un message (et je n'ai qu'un
> > > message !). A la troisième vérif : *trois* fois la mà ªme chose,
> > > etc.
> > >
> > > Il y a donc quelque chose de mal écrit, mais je n'arrive pas Ã
> > > trouver quoi...
> > >
> > > Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
> >
> > [...]
> >
> > > #---------------------------------------
> > > # Variables globales
> > > #----------------------------------------
> > > my $xdlg = "/usr/bin/zenity";
> > > my $pop;
> > > my $i;
> > > my $nom;
> > > my @amis;
> >
> > [...]
> >
> > >
> > > sub read_data {
> > > open DATAFILE, "$home_dir/amis.dat"
> > > or die "Fichier introuvable !";
> > > while (<DATAFILE>) {
> > > chomp;
> > > push @amis, $_."n";
> > > }
> >
> > [...]
> >
> > > while (1) {
> > > connection;
> > > read_data;
> >
> > [...]
> >
> > C'est normal que tu _rajoutes_ tes amis dans le tableau @amis Ã
> > chaque itération ? A la fin tu dois en avoir des amis :-)
> Ben non, c'est pas normal ! Et effectivement, Ã la fin j'en ai des
> amis, mais ce sont toujours les mêmes en plusieurs exemplaires...
Oui et c'est de là que provient ton erreur, je voulais juste te donn er
une piste afin que tu corriges cette erreur. Je n'ai plus ton code
mais si je me souviens bien tu itères sur les éléments de ton tableau
(tes amis) pour voir si tu as reçu un mail d'eux. Puisque qu'ils sont
en plusieurs exemplaires tu affiches plusieurs fois quelque chose
comme "j'ai reçu un mail de x".
> Est-ce qu'en simplement fermant DATAFILE à la fin de read_data à a
> règlerait le problème ?
Du tout non, tu le fais d'ailleurs si je me souviens bien. Ãa n'a
rien à voir avec DATAFILE, le problème est que tu rajoutes des
éléments à ton tableau @amis à chaque appel de la fon ction read_data
et comme ton tabeau est déclaré en début de script, hors d e toutes
fonctions, il n'est jamais reinitialisé. Il y a plusieurs manià ¨res
de le corriger (TIMTOWTDI, Cf. Google) tu peux par exemple effacer le
contenu de @amis (en lui affectant un tableau vide) avant de pusher
tes amis (laid), déclarer et définir une seule fois ce tableau donc Ã
l'extérieur de ta fonction read_data mais les modifications du
fichier amis.dat après le démarrage de ton script ne seront pas pris
en compte, passer ce tableau (variable déclaré et définie dans
read_data donc non « globale » (je met entre guillemets car tes
variables sont en fait lexicales)) en paramètre Ã
jesaispluslafunction et bien d'autres (je te conseille de te
renseigner sur les déclarations et leur portées (scope)).
Après c'est ta manière de coder, tu sembles apprendre donc je p réfère
te laisser le faire.
> >
> > Juste une remarque, évite d'avoir autant de variables globales;
> > pourquoi ne pas passer des paramètres aux fonctions ?
> Oui, tu as raison. Je fais ça parce que au début, je testait plus
> qu'autre chose...
> Juste une question : pourquoi le fait d'avoir tant de variables
> globales pose problème ?
Tu viens d'en rencontrer un. C'est crade, difficile à maintenir et ça
sera encore pire si tu veux ajouter des fonctionnalités (le principal
problème étant les conflits avec d'autres variables du mêm e nom).
Le mercredi 11 octobre 2006 Ã 16:23 +0200, Nicolas Roudninski a
écrit :
> Le Wed, 11 Oct 2006 15:36:14 +0200
> Vanuxem Grégory a écrit :
>
> > Le mercredi 11 octobre 2006 Ã 15:12 +0200, Nicolas Roudninski a
> > écrit :
> > > Bonjour à tous,
> > >
> > > Je sais que je suis hors sujet mais j'ai un petit problème avec
> > > un script perl.
> > > Ce script est chargé de vérifier si j'ai des messages de mes
> > > amis. tout fonctionne bien, sauf que, à la première
> > > vérification, le script m'affiche une fois que j'ai un message
> > > (quand j'en ai un). A la deuxième vérification, le script me
> > > dit *deux* fois que j'ai un message (et je n'ai qu'un
> > > message !). A la troisième vérif : *trois* fois la mà ªme chose,
> > > etc.
> > >
> > > Il y a donc quelque chose de mal écrit, mais je n'arrive pas Ã
> > > trouver quoi...
> > >
> > > Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
> >
> > [...]
> >
> > > #---------------------------------------
> > > # Variables globales
> > > #----------------------------------------
> > > my $xdlg = "/usr/bin/zenity";
> > > my $pop;
> > > my $i;
> > > my $nom;
> > > my @amis;
> >
> > [...]
> >
> > >
> > > sub read_data {
> > > open DATAFILE, "$home_dir/amis.dat"
> > > or die "Fichier introuvable !";
> > > while (<DATAFILE>) {
> > > chomp;
> > > push @amis, $_."n";
> > > }
> >
> > [...]
> >
> > > while (1) {
> > > connection;
> > > read_data;
> >
> > [...]
> >
> > C'est normal que tu _rajoutes_ tes amis dans le tableau @amis Ã
> > chaque itération ? A la fin tu dois en avoir des amis :-)
> Ben non, c'est pas normal ! Et effectivement, Ã la fin j'en ai des
> amis, mais ce sont toujours les mêmes en plusieurs exemplaires...
Oui et c'est de là que provient ton erreur, je voulais juste te donn er
une piste afin que tu corriges cette erreur. Je n'ai plus ton code
mais si je me souviens bien tu itères sur les éléments de ton tableau
(tes amis) pour voir si tu as reçu un mail d'eux. Puisque qu'ils sont
en plusieurs exemplaires tu affiches plusieurs fois quelque chose
comme "j'ai reçu un mail de x".
> Est-ce qu'en simplement fermant DATAFILE à la fin de read_data à a
> règlerait le problème ?
Du tout non, tu le fais d'ailleurs si je me souviens bien. Ãa n'a
rien à voir avec DATAFILE, le problème est que tu rajoutes des
éléments à ton tableau @amis à chaque appel de la fon ction read_data
et comme ton tabeau est déclaré en début de script, hors d e toutes
fonctions, il n'est jamais reinitialisé. Il y a plusieurs manià ¨res
de le corriger (TIMTOWTDI, Cf. Google) tu peux par exemple effacer le
contenu de @amis (en lui affectant un tableau vide) avant de pusher
tes amis (laid), déclarer et définir une seule fois ce tableau donc Ã
l'extérieur de ta fonction read_data mais les modifications du
fichier amis.dat après le démarrage de ton script ne seront pas pris
en compte, passer ce tableau (variable déclaré et définie dans
read_data donc non « globale » (je met entre guillemets car tes
variables sont en fait lexicales)) en paramètre Ã
jesaispluslafunction et bien d'autres (je te conseille de te
renseigner sur les déclarations et leur portées (scope)).
Après c'est ta manière de coder, tu sembles apprendre donc je p réfère
te laisser le faire.
> >
> > Juste une remarque, évite d'avoir autant de variables globales;
> > pourquoi ne pas passer des paramètres aux fonctions ?
> Oui, tu as raison. Je fais ça parce que au début, je testait plus
> qu'autre chose...
> Juste une question : pourquoi le fait d'avoir tant de variables
> globales pose problème ?
Tu viens d'en rencontrer un. C'est crade, difficile à maintenir et ça
sera encore pire si tu veux ajouter des fonctionnalités (le principal
problème étant les conflits avec d'autres variables du mêm e nom).
Le mercredi 11 octobre 2006 Ã 16:23 +0200, Nicolas Roudninski a
écrit :
> Le Wed, 11 Oct 2006 15:36:14 +0200
> Vanuxem Grégory a écrit :
>
> > Le mercredi 11 octobre 2006 Ã 15:12 +0200, Nicolas Roudninski a
> > écrit :
> > > Bonjour à tous,
> > >
> > > Je sais que je suis hors sujet mais j'ai un petit problème avec
> > > un script perl.
> > > Ce script est chargé de vérifier si j'ai des messages de mes
> > > amis. tout fonctionne bien, sauf que, à la première
> > > vérification, le script m'affiche une fois que j'ai un message
> > > (quand j'en ai un). A la deuxième vérification, le script me
> > > dit *deux* fois que j'ai un message (et je n'ai qu'un
> > > message !). A la troisième vérif : *trois* fois la mà ªme chose,
> > > etc.
> > >
> > > Il y a donc quelque chose de mal écrit, mais je n'arrive pas Ã
> > > trouver quoi...
> > >
> > > Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
> >
> > [...]
> >
> > > #---------------------------------------
> > > # Variables globales
> > > #----------------------------------------
> > > my $xdlg = "/usr/bin/zenity";
> > > my $pop;
> > > my $i;
> > > my $nom;
> > > my @amis;
> >
> > [...]
> >
> > >
> > > sub read_data {
> > > open DATAFILE, "$home_dir/amis.dat"
> > > or die "Fichier introuvable !";
> > > while (<DATAFILE>) {
> > > chomp;
> > > push @amis, $_."n";
> > > }
> >
> > [...]
> >
> > > while (1) {
> > > connection;
> > > read_data;
> >
> > [...]
> >
> > C'est normal que tu _rajoutes_ tes amis dans le tableau @amis Ã
> > chaque itération ? A la fin tu dois en avoir des amis :-)
> Ben non, c'est pas normal ! Et effectivement, Ã la fin j'en ai des
> amis, mais ce sont toujours les mêmes en plusieurs exemplaires...
Oui et c'est de là que provient ton erreur, je voulais juste te donn er
une piste afin que tu corriges cette erreur. Je n'ai plus ton code
mais si je me souviens bien tu itères sur les éléments de ton tableau
(tes amis) pour voir si tu as reçu un mail d'eux. Puisque qu'ils sont
en plusieurs exemplaires tu affiches plusieurs fois quelque chose
comme "j'ai reçu un mail de x".
> Est-ce qu'en simplement fermant DATAFILE à la fin de read_data à a
> règlerait le problème ?
Du tout non, tu le fais d'ailleurs si je me souviens bien. Ãa n'a
rien à voir avec DATAFILE, le problème est que tu rajoutes des
éléments à ton tableau @amis à chaque appel de la fon ction read_data
et comme ton tabeau est déclaré en début de script, hors d e toutes
fonctions, il n'est jamais reinitialisé. Il y a plusieurs manià ¨res
de le corriger (TIMTOWTDI, Cf. Google) tu peux par exemple effacer le
contenu de @amis (en lui affectant un tableau vide) avant de pusher
tes amis (laid), déclarer et définir une seule fois ce tableau donc Ã
l'extérieur de ta fonction read_data mais les modifications du
fichier amis.dat après le démarrage de ton script ne seront pas pris
en compte, passer ce tableau (variable déclaré et définie dans
read_data donc non « globale » (je met entre guillemets car tes
variables sont en fait lexicales)) en paramètre Ã
jesaispluslafunction et bien d'autres (je te conseille de te
renseigner sur les déclarations et leur portées (scope)).
Après c'est ta manière de coder, tu sembles apprendre donc je p réfère
te laisser le faire.
> >
> > Juste une remarque, évite d'avoir autant de variables globales;
> > pourquoi ne pas passer des paramètres aux fonctions ?
> Oui, tu as raison. Je fais ça parce que au début, je testait plus
> qu'autre chose...
> Juste une question : pourquoi le fait d'avoir tant de variables
> globales pose problème ?
Tu viens d'en rencontrer un. C'est crade, difficile à maintenir et ça
sera encore pire si tu veux ajouter des fonctionnalités (le principal
problème étant les conflits avec d'autres variables du mêm e nom).
sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."n";
}
sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."n";
}
sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."n";
}
Bonjour à tous,
Je sais que je suis hors sujet mais j'ai un petit problème avec un
script perl.
Ce script est chargé de vérifier si j'ai des messages de mes am is.
tout fonctionne bien, sauf que, à la première vérification , le script
m'affiche une fois que j'ai un message (quand j'en ai un). A la
deuxième vérification, le script me dit *deux* fois que j'ai un
message (et je n'ai qu'un message !). A la troisième vérif : *t rois*
fois la même chose, etc.
Il y a donc quelque chose de mal écrit, mais je n'arrive pas à trouver
quoi...
Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
Bonjour à tous,
Je sais que je suis hors sujet mais j'ai un petit problème avec un
script perl.
Ce script est chargé de vérifier si j'ai des messages de mes am is.
tout fonctionne bien, sauf que, à la première vérification , le script
m'affiche une fois que j'ai un message (quand j'en ai un). A la
deuxième vérification, le script me dit *deux* fois que j'ai un
message (et je n'ai qu'un message !). A la troisième vérif : *t rois*
fois la même chose, etc.
Il y a donc quelque chose de mal écrit, mais je n'arrive pas à trouver
quoi...
Si quelqu'un peut m'aider à y voir plus clair, ce serait super !
Bonjour à tous,
Je sais que je suis hors sujet mais j'ai un petit problème avec un
script perl.
Ce script est chargé de vérifier si j'ai des messages de mes am is.
tout fonctionne bien, sauf que, à la première vérification , le script
m'affiche une fois que j'ai un message (quand j'en ai un). A la
deuxième vérification, le script me dit *deux* fois que j'ai un
message (et je n'ai qu'un message !). A la troisième vérif : *t rois*
fois la même chose, etc.
Il y a donc quelque chose de mal écrit, mais je n'arrive pas à trouver
quoi...
Si quelqu'un peut m'aider à y voir plus clair, ce serait super !