Posez votre question Signaler

Script IF en Perl [Résolu]

Kharec 4258Messages postés 20 avril 2008Date d'inscription 8 mai 2011Dernière intervention - Dernière réponse le 1 mars 2009 à 13:40
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 =)
Lire la suite 

Script IF en Perl »

9 réponses
Réponse
+0
moins plus
hello
et avec
if ( my $sant == my $rep )
Ajouter un commentaire
Réponse
+0
moins plus
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 =)
Ajouter un commentaire
Réponse
+0
moins plus
[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!
Ajouter un commentaire
Réponse
+0
moins plus
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 :-)
Ajouter un commentaire
Réponse
+0
moins plus
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
Kharec - 1 mars 2009 à 12:01
Merci beaucoup, sujet résolu :-)
Ajouter un commentaire
Réponse
+0
moins plus
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";
}


Ajouter un commentaire
Réponse
+0
moins plus
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 ;-)
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup à vous tous, c'est vraiment sympa de votre part. Je vous suis vraiment reconnaissant! =)
Ajouter un commentaire
Ce document intitulé « Script IF en Perl » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook