OVH Cloud OVH Cloud

strict et chomp

7 réponses
Avatar
spambooboo
Bonjour,
J'ai décidé d'utiliser strict; pour mes scripts, afin de les garder
"clean". par contre, la ligne suivante..

unless (-e "\.languages") {
print ("Please Choose a Language -- Veuillez Choisir Une Langue
\n\n") ;
print (" F --> Francais\n\n") ;
print (" E --> English\n\n") ;
print (" ? --> Help / Aide\n\n") ;
chomp ($choice = <STDIN>) ;
}

... me renvoie l'erreur ...

Global symbol "$choice" requires explicit package name at ./uppatch line 41.

... ce que je ne capte pas du *tout*

A l'aide !! :-(

7 réponses

Avatar
Rue des Prairies
wrote:
Bonjour,


Bonjour,

J'ai décidé d'utiliser strict; pour mes scripts, afin de les garder
"clean".


Ça me parait plutôt une bonne chose :-)


par contre, la ligne suivante..

unless (-e ".languages") {
print ("Please Choose a Language -- Veuillez Choisir Une Langue
nn") ;
print (" F --> Francaisnn") ;
print (" E --> Englishnn") ;
print (" ? --> Help / Aidenn") ;
chomp ($choice = <STDIN>) ;
}

... me renvoie l'erreur ...

Global symbol "$choice" requires explicit package name at ./uppatch line
41.


Il faut déclarer toutes tes variables.

my ($choice);


... ce que je ne capte pas du *tout*

A l'aide !! :-(


Olivier.

Avatar
spambooboo
Rue des Prairies a dit ... on 17/05/2004 14:46:

Global symbol "$choice" requires explicit package name at ./uppatch
line 41.



Il faut déclarer toutes tes variables.

my ($choice);


Mais ... mais ... mais ... n'est-il pas marqué dans _Introduction à
Perl_ (O'Reilly) que Perl est justement mieux que le C, car il (perl) ne
t'impose pas la déclaration préable des variables ?


Avatar
-- Thomas vO --
bonjour,

Bonjour,
J'ai décidé d'utiliser strict; pour mes scripts, afin de les garder
"clean". par contre, la ligne suivante..

unless (-e ".languages") {
print ("Please Choose a Language -- Veuillez Choisir Une Langue
nn") ;
print (" F --> Francaisnn") ;
print (" E --> Englishnn") ;
print (" ? --> Help / Aidenn") ;
chomp ($choice = <STDIN>) ;
}

... me renvoie l'erreur ...

Global symbol "$choice" requires explicit package name at ./uppatch line
41.


y'a un "my $choice;" quelque part ?

--
Thomas vO -- Thomas van Oudenhove
http://www.enstimac.fr/~vanouden/

Avatar
Rue des Prairies
wrote:
Rue des Prairies a dit ... on 17/05/2004 14:46:

Global symbol "$choice" requires explicit package name at ./uppatch
line 41.




Il faut déclarer toutes tes variables.

my ($choice);



Mais ... mais ... mais ... n'est-il pas marqué dans _Introduction à
Perl_ (O'Reilly) que Perl est justement mieux que le C, car il (perl) ne
t'impose pas la déclaration préable des variables ?


C'est justement le rôle de "use strict" de détecter les variables non
déclarées (entre autres).



Avatar
Paul GABORIT
À (at) Mon, 17 May 2004 14:51:49 +0200,
"" écrivait (wrote):
Mais ... mais ... mais ... n'est-il pas marqué dans _Introduction à Perl_
(O'Reilly) que Perl est justement mieux que le C, car il (perl) ne t'impose
pas la déclaration préable des variables ?


C'est mieux jusqu'au moment où c'est moins bien ;-)

- Dans un petit script, c'est très pratique.

- Dans un programme de 1000 lignes ou plus, ça devient dur de (re)trouver une
faute de frappe sur un nom de variable. D'où l'usage de 'use strict' pour
forcer la déclaration préalable de toutes les variables.

L'intérêt de Perl est de pouvoir choisir : on peut faire vite et sale ou
propre et rapide...

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

Avatar
amaguk

Mais ... mais ... mais ... n'est-il pas marqué dans _Introduction à
Perl_ (O'Reilly) que Perl est justement mieux que le C, car il (perl) ne
t'impose pas la déclaration préable des variables ?


Il me semble que l'argument de déclaration des variables n'est pas
vraiment crucial lors du choix d'un langage. Non ?

Mais bon, comme il a été dit plus haut, tu as le choix entre le mode
'strict' et le mode par défaut avec les risques que cela comporte.

Manu

Avatar
Jack
Le 17/05/2004 14:46, :

wrote:

Bonjour,



Bonjour,

J'ai décidé d'utiliser strict; pour mes scripts, afin de les garder
"clean".



Ça me parait plutôt une bonne chose :-)


par contre, la ligne suivante..


unless (-e ".languages") {
print ("Please Choose a Language -- Veuillez Choisir Une
Langue nn") ;
print (" F --> Francaisnn") ;
print (" E --> Englishnn") ;
print (" ? --> Help / Aidenn") ;
chomp ($choice = <STDIN>) ;
}
print "choice[$choice]n"



... me renvoie l'erreur ...

Global symbol "$choice" requires explicit package name at ./uppatch
line 41.



Il faut déclarer toutes tes variables.

my ($choice);


... ce que je ne capte pas du *tout*

A l'aide !! :-(



Olivier.