Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thibault
Delf wrote:
Bonjour,
Salut,
Dans un script perl, je lis deux fichiers qui contiennent chacun un chiffre puis je les compare et c'est là que j'ai un probleme. Par exemple:
$one = 333 $two = 4444
if ($one gt $two) <- On rentre ici if ($one > $two) <- idem
J'ai testé les deux au cas où... on rentre tjrs dans le mauvais block...
Pourquoi ? Merci.
C'est en fait parce que tes variables extraites d'un fichier ne sont pas des entiers, ce sont des chaines de caracteres : "333" et "4444" il faut les transformer en int avec: $one = int($one); $two = int($two); et tout devrait rentrer dans l'ordre.
-- Delf
A+ Thibault
Delf wrote:
Bonjour,
Salut,
Dans un script perl, je lis deux fichiers qui contiennent chacun un chiffre
puis je les compare et c'est là que j'ai un probleme. Par exemple:
$one = 333
$two = 4444
if ($one gt $two) <- On rentre ici
if ($one > $two) <- idem
J'ai testé les deux au cas où... on rentre tjrs dans le mauvais block...
Pourquoi ? Merci.
C'est en fait parce que tes variables extraites d'un fichier ne sont pas
des entiers, ce sont des chaines de caracteres : "333" et "4444"
il faut les transformer en int avec:
$one = int($one);
$two = int($two);
et tout devrait rentrer dans l'ordre.
Dans un script perl, je lis deux fichiers qui contiennent chacun un chiffre puis je les compare et c'est là que j'ai un probleme. Par exemple:
$one = 333 $two = 4444
if ($one gt $two) <- On rentre ici if ($one > $two) <- idem
J'ai testé les deux au cas où... on rentre tjrs dans le mauvais block...
Pourquoi ? Merci.
C'est en fait parce que tes variables extraites d'un fichier ne sont pas des entiers, ce sont des chaines de caracteres : "333" et "4444" il faut les transformer en int avec: $one = int($one); $two = int($two); et tout devrait rentrer dans l'ordre.
-- Delf
A+ Thibault
Michel Rodriguez
Delf wrote:
Dans un script perl, je lis deux fichiers qui contiennent chacun un chiffre puis je les compare et c'est là que j'ai un probleme. Par exemple:
$one = 333 $two = 4444 if ($one gt $two) <- On rentre ici if ($one > $two) <- idem
J'ai testé les deux au cas où... on rentre tjrs dans le mauvais block... Pourquoi ? Merci.
Si tu nous montrais tout le code on pourrait te dire. Ce que tu nous montre c'est des extraits qu'on ne peut pas faire tourner. Un petit cas de test qu'on peut executer nous permettrait de te donner plus d'info.
En tout cas ca devrait marcher (et il n'y a vraiment pas besoin de convertir les chaines en entier, on est pas en C, Perl fait ca tres bieng tout seul).
En tout cas ca ca marche, y compris si tes nombres ont un n ou un r a la fin (puisque tu les lis depuis un fichier c'est une possibilite): #!/usr/bin/perl -w use strict;
my $one = 333; my $two = 4444;
foreach my $exp ( '$one gt $two' , '$one > $two', '$one < $two', '$one lt $two') { print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
print "n";
my $one_nl= "333n"; my $two_nl= "4444n";
foreach my $exp ( '$one_nl gt $two_nl' , '$one_nl > $two_nl', '$one_nl < $two_nl', '$one_nl lt $two_nl') { print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
print "n";
my $one_lr= "333r"; my $two_lr= "4444r";
foreach my $exp ( '$one_lr gt $two_lr' , '$one_lr > $two_lr', '$one_lr < $two_lr', '$one_lr lt $two_lr') { print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
donne:
$one gt $two est faux $one > $two est faux $one < $two est vrai $one lt $two est vrai
$one_nl gt $two_nl est faux $one_nl > $two_nl est faux $one_nl < $two_nl est vrai $one_nl lt $two_nl est vrai
$one_lr gt $two_lr est faux $one_lr > $two_lr est faux $one_lr < $two_lr est vrai $one_lr lt $two_lr est vrai
__ Michel Rodriguez Perl & XML http://xmltwig.com
Delf wrote:
Dans un script perl, je lis deux fichiers qui contiennent chacun un
chiffre puis je les compare et c'est là que j'ai un probleme. Par exemple:
$one = 333
$two = 4444
if ($one gt $two) <- On rentre ici
if ($one > $two) <- idem
J'ai testé les deux au cas où... on rentre tjrs dans le mauvais block...
Pourquoi ? Merci.
Si tu nous montrais tout le code on pourrait te dire. Ce que tu nous montre
c'est des extraits qu'on ne peut pas faire tourner. Un petit cas de test
qu'on peut executer nous permettrait de te donner plus d'info.
En tout cas ca devrait marcher (et il n'y a vraiment pas besoin de convertir
les chaines en entier, on est pas en C, Perl fait ca tres bieng tout seul).
En tout cas ca ca marche, y compris si tes nombres ont un n ou un r a la
fin (puisque tu les lis depuis un fichier c'est une possibilite):
#!/usr/bin/perl -w
use strict;
my $one = 333;
my $two = 4444;
foreach my $exp ( '$one gt $two' , '$one > $two', '$one < $two', '$one lt
$two')
{ print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
print "n";
my $one_nl= "333n";
my $two_nl= "4444n";
foreach my $exp ( '$one_nl gt $two_nl' , '$one_nl > $two_nl', '$one_nl <
$two_nl', '$one_nl lt $two_nl')
{ print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
print "n";
my $one_lr= "333r";
my $two_lr= "4444r";
foreach my $exp ( '$one_lr gt $two_lr' , '$one_lr > $two_lr', '$one_lr <
$two_lr', '$one_lr lt $two_lr')
{ print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
donne:
$one gt $two est faux
$one > $two est faux
$one < $two est vrai
$one lt $two est vrai
$one_nl gt $two_nl est faux
$one_nl > $two_nl est faux
$one_nl < $two_nl est vrai
$one_nl lt $two_nl est vrai
$one_lr gt $two_lr est faux
$one_lr > $two_lr est faux
$one_lr < $two_lr est vrai
$one_lr lt $two_lr est vrai
__
Michel Rodriguez
Perl & XML
http://xmltwig.com
Dans un script perl, je lis deux fichiers qui contiennent chacun un chiffre puis je les compare et c'est là que j'ai un probleme. Par exemple:
$one = 333 $two = 4444 if ($one gt $two) <- On rentre ici if ($one > $two) <- idem
J'ai testé les deux au cas où... on rentre tjrs dans le mauvais block... Pourquoi ? Merci.
Si tu nous montrais tout le code on pourrait te dire. Ce que tu nous montre c'est des extraits qu'on ne peut pas faire tourner. Un petit cas de test qu'on peut executer nous permettrait de te donner plus d'info.
En tout cas ca devrait marcher (et il n'y a vraiment pas besoin de convertir les chaines en entier, on est pas en C, Perl fait ca tres bieng tout seul).
En tout cas ca ca marche, y compris si tes nombres ont un n ou un r a la fin (puisque tu les lis depuis un fichier c'est une possibilite): #!/usr/bin/perl -w use strict;
my $one = 333; my $two = 4444;
foreach my $exp ( '$one gt $two' , '$one > $two', '$one < $two', '$one lt $two') { print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
print "n";
my $one_nl= "333n"; my $two_nl= "4444n";
foreach my $exp ( '$one_nl gt $two_nl' , '$one_nl > $two_nl', '$one_nl < $two_nl', '$one_nl lt $two_nl') { print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
print "n";
my $one_lr= "333r"; my $two_lr= "4444r";
foreach my $exp ( '$one_lr gt $two_lr' , '$one_lr > $two_lr', '$one_lr < $two_lr', '$one_lr lt $two_lr') { print eval $exp ? "$exp est vrain" : "$exp est fauxn"; }
donne:
$one gt $two est faux $one > $two est faux $one < $two est vrai $one lt $two est vrai
$one_nl gt $two_nl est faux $one_nl > $two_nl est faux $one_nl < $two_nl est vrai $one_nl lt $two_nl est vrai
$one_lr gt $two_lr est faux $one_lr > $two_lr est faux $one_lr < $two_lr est vrai $one_lr lt $two_lr est vrai
__ Michel Rodriguez Perl & XML http://xmltwig.com
Delf
"dominique" a écrit dans le message news:
es-tu vraiment sur de ton coup ? verifies bien ton code car ca semble vraiment bisard
J'ai verifié l'etat des variables avec des print...
-- Delf
"dominique" a écrit dans le message news:
es-tu vraiment sur de ton coup ?
verifies bien ton code car ca semble vraiment bisard
J'ai verifié l'etat des variables avec des print...