If en perl
Kharec
Messages postés
4146
Date d'inscription
Statut
Contributeur
Dernière intervention
-
lami20j -
lami20j -
Bonjour la communauté,
Je vous explique mon souci, j'ai fait un script inutile pour retenir les structures sub, if, et for. Mais là... If passe directement à la réponse "Votre variable n'est pas gore"... Pourquoi?
#! /usr/bin/perl
sub func() {
if ($var eq "gore") {
print "Votre variable est bien gore\n" ;
}
else {
print "Votre variable n'est pas gore \n" ;
}
}
print "Donnez la variable: " ;
for (chomp(my $var=<STDIN>)) {
func ;
}
Merci à ceux qui pourront m'aider =)
Je vous explique mon souci, j'ai fait un script inutile pour retenir les structures sub, if, et for. Mais là... If passe directement à la réponse "Votre variable n'est pas gore"... Pourquoi?
#! /usr/bin/perl
sub func() {
if ($var eq "gore") {
print "Votre variable est bien gore\n" ;
}
else {
print "Votre variable n'est pas gore \n" ;
}
}
print "Donnez la variable: " ;
for (chomp(my $var=<STDIN>)) {
func ;
}
Merci à ceux qui pourront m'aider =)
2 réponses
Salut,
1. pourquoi un for sur une seule variable, en général de cette manière on l'utilise comme un foreach pour un tableau?
2. Tu as deux variables $var qui ne sont pas les même. Elles ne se voient jamais entre eux à cause de leur portée.
3. Un use strict;use warnings; t'aurais prévenu
Cas 1 - j'utilise our $var
Le code s'exécute correctement puisque la variable $var est globale.
Cas 2 - j'utilise le tableau @_
1. pourquoi un for sur une seule variable, en général de cette manière on l'utilise comme un foreach pour un tableau?
2. Tu as deux variables $var qui ne sont pas les même. Elles ne se voient jamais entre eux à cause de leur portée.
3. Un use strict;use warnings; t'aurais prévenu
lami20j@debian:~$ cat if.pl #! /usr/bin/perl use strict;use warnings; sub func() { if ($var eq "gore") { print "Votre variable est bien gore\n" ; } else { print "Votre variable n'est pas gore \n" ; } } print "Donnez la variable: " ; for (chomp(my $var=<STDIN>)) { func ; } lami20j@debian:~$ perl -cx if.pl Global symbol "$var" requires explicit package name at if.pl line 4. if.pl had compilation errors.
Cas 1 - j'utilise our $var
Le code s'exécute correctement puisque la variable $var est globale.
lami20j@debian:~$ cat if.pl #! /usr/bin/perl use strict;use warnings; our $var; sub func() { if ($var eq "gore") { print "Votre variable est bien gore\n" ; }else { print "Votre variable n'est pas gore \n" ; } } print "Donnez la variable: " ; for (chomp( $var=<STDIN>)) { func ; } lami20j@debian:~$ perl -cx if.pl if.pl syntax OK lami20j@debian:~$ perl if.pl Donnez la variable: gore Votre variable est bien gore lami20j@debian:~$ perl if.pl Donnez la variable: blabla Votre variable n'est pas gore
Cas 2 - j'utilise le tableau @_
lami20j@debian:~$ cat if1.pl #! /usr/bin/perl use strict;use warnings; sub func { my $var = shift; if ($var eq "gore") { print "Votre variable est bien gore\n" ; } else { print "Votre variable n'est pas gore \n" ; } } print "Donnez la variable: " ; chomp(my $var=<STDIN>); func($var); lami20j@debian:~$ perl -cx if1.pl if1.pl syntax OK lami20j@debian:~$ perl if1.pl Donnez la variable: gore Votre variable est bien gore lami20j@debian:~$ perl if1.pl Donnez la variable: blabla Votre variable n'est pas gore
Re,
Voici ce qui ce passe avec la portée des variables.
Voici ce qui ce passe avec la portée des variables.
lami20j@debian:~$ cat var.pl #!/usr/bin/perl use strict;use warnings; our $var="gore"; print "A l'exterieur \$var vaut : $var\n"; { my $var = "autre chose"; print "Dans le bloc \$var vaut : $var\n"; } print "A l'exterieur \$var vaut : $var\n"; __END__ lami20j@debian:~$ perl var.pl A l'exterieur $var vaut : gore Dans le bloc $var vaut : autre chose A l'exterieur $var vaut : gore