¿Hay alguna manera de borrar el buffer STDIN en Perl? Una parte de mi programa tiene una salida larga (tiempo suficiente para que alguien ingrese algunos caracteres) y después de esa salida pido una entrada, pero si los caracteres fueron ingresados durante la salida, se "agregan" a lo que se ingresa en la entrada parte. Aquí hay un ejemplo de mi problema:Flushing Perl STDIN buffer
for(my $n = 0; $n < 70000; $n++){
print $n . "\n";
}
chomp(my $input = <STDIN>);
print $input . "\n";
La salida incluiría los caracteres ingresados durante la salida de ese ciclo for. ¿Cómo podría desactivar STDIN o eliminar el búfer STDIN (o de otra forma no permitir que se inserten caracteres adicionales en STDIN antes de llamarlo)?
Ok, me han estado buscando una respuesta a esta pregunta durante 3 días ahora (no cada hora de todos los días, pero yo diría al menos 3 o 4 horas por día) y aún no he encontrado una respuesta, de hecho, les pregunté a mis colegas, que también conocen y usan Perl, y tampoco lo saben, así que sí creo que he puesto más esfuerzo de lo que insinúas que he puesto, que aparte, ¿tienes alguna idea de cómo hacer lo que estoy pidiendo? Debido a que ya revisé su enlace, hace aproximadamente 3 días, intenté implementar esas funciones de una manera que lógicamente solucionaría este problema, y no funcionó. – mcwillig
'use IO :: Handle; STDIN-> autoflush (1);' –
Gracias por su respuesta, pero esto no solucionó el problema, también, recuerdo que leer autoflush y flush solo son buenos para la salida, tales como STDERR y STDOUT, no entrada. Cuando probé lo que sugeriste, sigo recibiendo los caracteres que ingresé durante la salida del bucle for más lo que ingresé en STDIN. – mcwillig