Script IF en Perl

Résolu
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   -  
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour les amis! =)

Voilà, je travaille ma syntaxe if en PERL, et j'ai un petit problème que je ne parviens pas à résoudre... Je vous narre cela. Dans le script suivant, même si ma condition est respectée, le script passe toujours à else...

Voici le script (pas intelligent, mais c'est pour utiliser if, donc j'ai mis ce qui me passait par la tête, pour le texte ^^):

#! /usr/bin/perl


use strict;use warnings; 

my $rep="Bien!" ;

print "Comment allez-vous?\n" ;

chomp(my $sant=<STDIN>) ;

if ( my $sant=my $rep ) {

	print "Super!\n" ;
}

else {

	print "Ah...\n" ;
}



Voilà... Il n'est peut être pas super bien écrit, je vous l'accorde ^^. Donc je voudrai votre aide pour debugger ce script et comprendre pourquoi il ne fonctionne pas.

Merci à vous et bon dimanche =)
A voir également:

8 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
et avec
if ( my $sant == my $rep )
0
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   510
 
Je vois que dubcek a répondu, mais à cause des bugs actuels du site, je ne peux pas voir sa réponse... Je m'excuse auprès de lui.. Si il pouvait me l'écrire en pv, ce serait sympa =)
0
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   510
 
[kharec@mandriva bac à sable]$ ./if
Comment allez-vous?
mal
Use of uninitialized value $rep in numeric eq (==) at ./if line 12, <STDIN> line 1.
Use of uninitialized value $sant in numeric eq (==) at ./if line 12, <STDIN> line 1.
Super!


Voilà, dubcek!
0
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   510
 
Donc je l'ai laissé comme dans mon premier post pour le moment et je réfléchis pleinement (mais un petit coup de main serait pas de refus ^^). Merci à toi et aux autres qui viendraient :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Tes variables $sant et $rep sont déjà définies, donc n'utilise pas my dans le if. De plus, utilise l'opérateur eq pour la comparaison dans le if.
Ce qui donne :
if ($sant  eq  $rep )

Cdlt
0
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   510
 
Merci beaucoup, sujet résolu :-)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

D'autres variantes
unless ( $sant cmp $rep ) {
        print "Super!\n" ;
}else {
        print "Ah...\n" ;
}
#

if ( !($sant cmp $rep )) {
        print "Super!\n" ;
}else {
        print "Ah...\n" ;
}
#

if ( $sant=~/^$rep$/ ) {
        print "Super!\n" ;
}else {
        print "Ah...\n" ;
}
#

if ( $sant cmp $rep ){
        print "Ah...\n";
}else{
        print "Super!\n";
}


0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Ou avec une somme de contrôle
if ( unpack("%32C*",$sant) == unpack("%32C*",$rep)){
        print "Super!\n";
}else{
        print "Ah...\n";
}

C'était pour s'amuser, puisqu'il faut prendre en compte le risque de collisions ;-)
0
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   510
 
Merci beaucoup à vous tous, c'est vraiment sympa de votre part. Je vous suis vraiment reconnaissant! =)
0