2011-01-31 7 views

risposta

12

Se si è su una piattaforma Unix, è possibile aprire un filehandle su /dev/tty (oppure utilizzare IO::Pty).
Un buon esempio di lavoro con tty è in "Test se un programma è in esecuzione in modo interattivo" esempio qui: http://pleac.sourceforge.net/pleac_perl/userinterfaces.html

Si dovrebbe anche prendere in considerazione facendo la password IO tramite Term::ReadKey (descritti in perlfaq8) - Penso che possa essere legato alla TTY invece di STDIO ma non sono sicuro. In caso contrario, utilizzare la soluzione TTY + Term :: ReadKey elencata alla fine di this SO answer by brian d foy.

Ecco un esempio.

It's not the best style (doesn't use 3-arg form of open, nor uses lexical filehandles) ma dovrebbe funzionare.

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); 
+0

Problema risolto. Molte grazie. – Arkady

+0

@Arkady - siete i benvenuti. Sentitevi liberi di accettare la risposta facendo clic sul segno di spunta accanto ad essa (che vi farà guadagnare anche 2 punti di rep) e di votare la risposta (freccia su accanto ad essa) – DVK