Perché l'EQ non lavora con il mio input di stringhe?
-
28-10-2019 - |
Domanda
Ho appena iniziato ad imparare perl e vale a dire, impara il flusso del programma - principali differenze notevoli tra la valutazione di stringhe e il numero e l'utilizzo degli operatori appropriati. Script semplice, ho qui mi sta facendo impazzire in quanto è una affermazione super semplice, se altrimenti che dovrebbe "Mike" che viene inserita e non funziona. Osporta invece l'istruzione else invece. Per favore aiuto
#!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");
}
Soluzione
Mentre leggevo la tua domanda, pensavo che stavi per avere un problema con le stringhe rispetto ai valori numerici in una pari. Considera il seguente caso:
#!/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" ;
}
Prova i due diversi if
dichiarazioni. Rispondi a qualcosa di carino come family
E vedi cosa succede. Il ~~
è l'operatore di match smart che ha aiutato parte di questo problema a Perl. Leggi di più su di esso qui (sotto "corrispondenza intelligente in dettaglio"). Nota anche l'uso in linea del chomp
operatore.
Altri suggerimenti
Prova ad aggiungere una chiamata a Chomp dopo aver ottenuto il tuo valore da Stdin:
$userName = <STDIN>;
chomp($userName);
Dal momento che il valore letto da Stdin avrà un carattere di nuova linea alla fine. Il chomp () integrato rimuoverà una nuova linea dalla fine di una stringa.