2011-01-31 4 views

Odpowiedz

12

Jeśli korzystasz z platformy Unix, możesz otworzyć uchwyt pliku na /dev/tty (lub użyć IO::Pty).
Dobrym przykładem współpracy z tty w „Sprawdzanie czy program jest uruchomiony interaktywnie” przykład tutaj: http://pleac.sourceforge.net/pleac_perl/userinterfaces.html

Należy również rozważyć robi hasło IO poprzez Term::ReadKey (opisany w perlfaq8) - myślę, że może to być związane z TTY zamiast STDIO, ale nie jestem pewien. Jeśli nie jest, użyj rozwiązania TTY + Term :: ReadKey wymienionego pod koniec this SO answer by brian d foy.

Oto przykład.

It's not the best style (doesn't use 3-arg form of open, nor uses lexical filehandles) ale powinno działać.

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

Problem rozwiązany. Wielkie dzięki. – Arkady

+0

@Arkady - nie ma za co. Możesz zaakceptować odpowiedź, klikając zaznaczenie obok niej (to też da ci 2 punkty), a także oddać głos do góry (strzałka w górę obok) – DVK

Powiązane problemy