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

8 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    et avec
    if ( my $sant == my $rep )
    0
  2. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
     
    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
  3. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
     
    [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
  4. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
       
      Merci beaucoup, sujet résolu :-)
      0
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  9. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
     
    Merci beaucoup à vous tous, c'est vraiment sympa de votre part. Je vous suis vraiment reconnaissant! =)
    0