C'è un modo per cancellare il buffer STDIN in Perl? Una parte del mio programma ha una lunga uscita (tempo sufficiente per qualcuno per inserire alcuni caratteri) e dopo quell'output chiedo l'input, ma se i caratteri sono stati inseriti durante l'output, vengono "attaccati" a qualsiasi cosa venga immessa nell'input parte. Ecco un esempio del mio problema:Flushing Perl buffer STDIN
for(my $n = 0; $n < 70000; $n++){
print $n . "\n";
}
chomp(my $input = <STDIN>);
print $input . "\n";
L'output includerebbe qualsiasi carattere immesso durante l'output da quel ciclo for. Come potrei disabilitare STDIN o svuotare il buffer STDIN (o in un altro modo per non consentire l'inserimento di caratteri extra in STDIN prima di chiamarlo)?
Ok, ho cercato una risposta a questa domanda per 3 giorni la società (non ogni ora di ogni giorno, ma direi almeno 3 o 4 ore al giorno) e non ho ancora trovato una risposta, infatti ho chiesto ai miei colleghi, che conoscono e usano anche il Perl, e non lo sanno neanche io, quindi credo che ho fatto più sforzi di quanto tu stia insinuando che ho inserito, a parte questo, hai qualche idea su come fare quello che sto chiedendo? Poiché ho già controllato il tuo link, circa 3 giorni fa, ho provato a implementare tali funzioni in un modo che avrebbe risolto il problema logicamente e non ha funzionato. – mcwillig
'use IO :: Handle; STDIN-> autoflush (1);' –
Grazie per la risposta, ma questo non ha risolto il problema, inoltre, ricordo che leggere autoflush e flush sono buoni solo per l'output, ad esempio come STDERR e STDOUT, non input. Quando ho provato ciò che mi hai suggerito, ricevo comunque i caratteri che ho inserito durante l'output del ciclo for più ciò che ho inserito in STDIN. – mcwillig