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");
}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top