Perché riscontro problemi nel confrontare le righe dall'input in Perl?
-
03-07-2019 - |
Domanda
Non so cosa potrei fare di sbagliato in questa semplice transazione, ma non funziona:
print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}
Fondamentalmente voglio sapere come testare l'input dell'utente. Questo pezzetto di codice non funzionerà per me. Sto solo provando a stampare $ans
se y
è stato inserito dall'utente.
Qualche suggerimento?
EDIT: - Ho anche provato virgolette singole
Soluzione
Stai sbagliando un paio di cose.
(1) Non utilizzare l'operatore diamante (< >) quando si desidera < STDIN > ;. L'operatore Diamond leggerà anche i file da @ARGV, che probabilmente non vuoi.
(2) $ ans non sarà mai uguale a " y " a meno che non lo tagli prima. Alla fine avrà una nuova riga.
Altri suggerimenti
Un toccasana per variabili di contenuto misterioso:
use Data::Dumper;
$Data::Dumper::Useqq = 1; # show newlines, tabs, etc in visible form
$Data::Dumper::Terse = 1;
print '$ans is really: ', Dumper($ans);
Anche se alla tua domanda diretta è stata data una risposta, potresti voler esaminare alternative come Termine: readline
Hai provato:
if($ans eq 'y'){print $ans;}