Question

Je viens de commencer à apprendre Perl et à savoir, apprendre le déroulement du programme - les principales différences notables entre l'évaluation des chaînes et des nombres et l'utilisation des opérateurs appropriés.Un script simple, que j'ai ici, me rend fou car c'est une instruction if else super simple qui devrait exécuter "mike" et qui ne fonctionne pas.Il renvoie l'instruction else à la place.S'il vous plaît aider

#!C:\strawberry\perl\bin\perl.exe

use strict;
#use warnings;
#use diagnostics;

print("What is your name please?");
$userName = <STDIN>;


if($userName eq "mike"){
    print("correct answer");
}
else{
    print("Wrong answer");
}
Était-ce utile?

La solution

En lisant votre question, j'ai pensé que vous étiez sur le point d'avoir un problème avec les chaînes par rapport aux valeurs numériques dans un égal.Prenons le cas suivant:

#!/usr/bin/env perl

use strict;
use warnings;

print("What is the meaning of life, the universe and everything? ");
chomp(my $response = <STDIN>);

if ( $response == 42) {
#if ( 42 ~~ $response ) {
    print "correct answer\n";
} else {
    print "Wrong answer\n" ;
}

Essayez les deux instructions if différentes.Répondez à quelque chose de gentil comme family et voyez ce qui se passe.~~ est l'opérateur de correspondance intelligent qui a aidé à résoudre certains de ces problèmes en Perl.Pour en savoir plus, cliquez ici (sous "Smart matching in detail").Notez également l'utilisation en ligne de l'opérateur chomp.

Autres conseils

Essayez d'ajouter un appel à chomp après avoir obtenu votre valeur auprès de STDIN:

$userName = <STDIN>;
chomp($userName);

Puisque la valeur lue depuis STDIN aura un caractère de nouvelle ligne à la fin.Le chomp () intégré supprimera une nouvelle ligne à la fin d'une chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top