Tengo un script Perl procesando un conducto. En algún momento, me gustaría que el script se detenga y solicite la entrada del teclado del usuario. my $input = <STDIN>;
no funciona. Simplemente lee la siguiente línea de la tubería. ¿Cómo puedo hacer que Perl use diferentes controladores para entrada de tubo y entrada de teclado?¿Cómo hacer que Perl use diferentes controladores para entrada de tubo y entrada de teclado?
6
A
Respuesta
12
Si se encuentra en una plataforma Unix, puede abrir una manejador de archivos en /dev/tty
(o use IO::Pty
).
Un buen ejemplo de trabajo con TTY está en "comprobar si un programa se ejecuta de forma interactiva" ejemplo aquí: http://pleac.sourceforge.net/pleac_perl/userinterfaces.html
También debe considerar hacer contraseña IO a través de Term::ReadKey
(descrito en perlfaq8) - Creo que puede estar ligada a TTY en lugar de STDIO, pero no estoy seguro. Si no es así, use la solución TTY + Term :: ReadKey que se encuentra al final de this SO answer by brian d foy.
Aquí hay un ejemplo.
It's not the best style (doesn't use 3-arg form of open
, nor uses lexical filehandles) pero debería funcionar.
use autodie; # Yay! No "or die '' "
use Term::ReadKey;
open(TTYOUT, ">/dev/tty");
print TTYOUT "Password?: ";
close(TTYOUT);
open(TTY, "</dev/tty");
ReadMode('noecho');
$password = ReadLine(0, *TTY);
Cuestiones relacionadas
- 1. Android Emulator: entrada de teclado suave y entrada de teclado duro
- 2. Less recibe entrada de teclado de stderr?
- 3. ¿Cómo puedo hacer que mi script de Perl use múltiples núcleos para procesos secundarios?
- 4. Entrada de entrada personalizada para UITextField, ¿cómo dirijo la entrada de regreso al campo de texto?
- 5. Entrada de teclado/mouse en C++
- 6. C# Envío de entrada de teclado
- 7. Cómo detener la entrada en Perl?
- 8. Java: manipulación combinada de entrada de teclado
- 9. ¿Cómo falsificar la entrada al operador de diamantes de perl?
- 10. Manejo efectivo de la entrada del teclado
- 11. ¿Cómo tener diferentes tipos de entrada para la misma función?
- 12. Cómo hacer que fmt: formatDate funcione para la forma: entrada
- 13. recomendación de entrada de teclado/ratón multiplataforma
- 14. Android: Detectar inactividad del usuario/Detectar (teclado) entrada de teclado
- 15. Consola de teclado concurrente/no bloqueada entrada
- 16. UITextField no recibe entrada de teclado
- 17. ¿Cómo puedo hacer que Perl tome la entrada de STDIN un carácter a la vez?
- 18. Creando una entrada para un atajo de teclado personalizable
- 19. shell-scripting: Use una tubería como entrada para tar
- 20. Perl, deshabilitar la entrada de amortiguación
- 21. g ++: Use archivos ZIP como entrada
- 22. ¿Cómo obtener entrada de teclado directa en C++?
- 23. Prueba de unidad Java para diferentes datos de entrada
- 24. Sólo los números como entrada de teclado para ipad
- 25. Java recibiendo entrada del teclado MIDI
- 26. ¿Cómo desactivo la entrada de teclado y mouse para un JSpinner?
- 27. Enviar entrada de teclado a un proceso en ejecución linux
- 28. ¿Cómo puedo obtener una UIWebView para enfocarme en una entrada de formulario y abrir el teclado?
- 29. ¿Es posible hacer que la entrada del usuario sea invisible como una entrada de contraseña 'sudo'?
- 30. ¿Cómo hacer que un WPF TextBox use caracteres de contraseña?
Problema resuelto. Muchas gracias. – Arkady
@Arkady - de nada. Por favor, siéntase libre de aceptar la respuesta haciendo clic en la marca de verificación al lado (que también le otorgará 2 puntos de repetición), así como para votar por la respuesta (flecha arriba al lado) – DVK