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 :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
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 - Les fichiers VoirLa notion de filehandle On appelle filehandle (traduisez descripteur de fichier), dans un programme Perl, le nom permettant de manipuler une connexion d'entrée-sortie (les entrées-sorties standards vues précédemment sont connues par les filehandles...

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