Perché non riesco a far corrispondere la mia stringa dallo standard input in Perl?

Perché il mio script non funziona correttamente?

Seguo un video di YouTube e ho lavorato per il ragazzo.

Sto eseguendo Perl su Windows usando ActiveState ActivePerl 5.12.2.1202

Ecco il mio minuscolo blocco di codice.

print "What is your name?\n"; $name = ; if ($name eq "Jon") { print "We have met before!\n"; } else { print "We have not met before.\n"; } 

Il codice salta automaticamente alla dichiarazione else e non controlla nemmeno l’istruzione if.

L’istruzione $name = ; legge dallo standard input e include il carattere di fine riga ” \n “. Rimuovi questo personaggio usando la funzione chomp :

 print "What is your name?\n"; $name = ; chomp($name); if ($name eq "Jon") { print "We have met before!\n"; } else { print "We have not met before.\n"; } 

Il trucco nella programmazione è sapere quali sono i tuoi dati. Quando qualcosa non funziona come ti aspetti, guarda i dati per vedere se sono ciò che ti aspetti. Per esempio:

  print "The name is [$name]\n"; 

Metti le parentesi attorno ad esso in modo da poter vedere qualsiasi spazio bianco extra che potrebbe essere lì. In questo caso, avresti visto:

 The name is [Jon ] 

Questo è il tuo indizio che ci sono cose extra. Dal momento che l’ eq deve corrispondere esattamente, non riesce a corrispondere.

Se stai iniziando con Perl, prova ad imparare Perl . È molto meglio dei video casuali di YouTube. 🙂

Quando si legge il nome input standard come $name = ;

$name avrà una nuova riga finale. Quindi se inserisco foo , $name avrà effettivamente foo\n .

Per sbarazzarsi di questa nuova riga si fa uso della funzione chomp come:

 chomp($name = );