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

È stato utile?

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;}

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