Script IF en Perl

Résolu
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 =)

8 réponses

  1. Contributeur
    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 =)
    1. Contributeur
      [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!
      1. Contributeur
        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 :-)
        1. Contributeur
          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
          1. Contributeur
            Merci beaucoup, sujet résolu :-)
        2. Modérateur
          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";
          }


          1. Modérateur
            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 ;-)
            1. Contributeur
              Merci beaucoup à vous tous, c'est vraiment sympa de votre part. Je vous suis vraiment reconnaissant! =)