Rechercher : dans
Par :

Script IF en Perl

Dernière réponse le 1 mar 2009 à 13:40:46 Kharec, le 1 mar 2009 à 10:44:45 
 Signaler ce message aux modérateurs

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 =)

Meilleures réponses pour « Script IF en Perl » dans :
Perl - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Javascript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non, ce qui permet notamment de donner de l'interactivité à vos scripts. L'instruction...
Perl - Caractéristiques du langage VoirFichier source, et interprétation Le fichier source d'un programme écrit en Perl est un simple fichier texte dont l'extension est par convention .pl. Ce fichier source doit être un fichier texte non formatté, c'est-à-dire un fichier texte dans sa...

1

dubcek, le 1 mar 2009 à 11:12:58

Hello
et avec
if ( my $sant == my $rep )

Répondre à dubcek

2

Kharec, le 1 mar 2009 à 11:35:10

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 =)

Répondre à Kharec

3

Kharec, le 1 mar 2009 à 11:37:46

[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!

Répondre à Kharec

4

Kharec, le 1 mar 2009 à 11:48:07

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 :-)

Répondre à Kharec

5

fiddy, le 1 mar 2009 à 11:57:00

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
Google is your friend

Répondre à fiddy

6

Kharec, le 1 mar 2009 à 12:01:07

Merci beaucoup, sujet résolu :-)

Répondre à Kharec

7

lami20j, le 1 mar 2009 à 12:26:49

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";
}


106485010510997108

Répondre à lami20j

8

lami20j, le 1 mar 2009 à 12:47:35

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 ;-) 106485010510997108

Répondre à lami20j

9

 Kharec, le 1 mar 2009 à 13:40:46

Merci beaucoup à vous tous, c'est vraiment sympa de votre part. Je vous suis vraiment reconnaissant! =)

Répondre à Kharec