Wie kann ich Benutzereingaben, ohne zu warten, geben Sie in Perl?
Ich versuche, ein interaktives shell-Skript in Perl.
Die einzige Benutzereingabe, die ich finden kann ist folgende:
$name = <STDIN>;
print STDOUT "Hello $name\n";
Aber in diesem der Nutzer muss immer enter drücken, damit die änderungen wirksam werden.
Wie bekomme ich das Programm sofort, nachdem eine Taste gedrückt wurde?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom perlfaq8's Antwort auf Wie lese ich nur eine Taste, ohne zu warten, für ein return-Taste?
:
Controlling-input-buffering ist eine bemerkenswert-system-abhängige Angelegenheit. Auf vielen Systemen können Sie einfach das stty-Befehl, wie dargestellt in getc in perlfunc, aber wie Sie sehen, das ist schon immer Sie in Portabilität Tücken.
Den Term::ReadKey-Modul aus dem CPAN bietet eine einfach zu bedienende Schnittstelle, die sollte effizienter sein, als Beschuss aus auf stty für jeden Schlüssel. Es beinhaltet sogar eine eingeschränkte Unterstützung für Windows.
Jedoch mit der code erfordert, dass Sie einen C-compiler und können es verwenden, um erstellen und installieren Sie ein CPAN-Modul. Hier ist eine Lösung mit der standard-POSIX-Modul, das bereits auf Ihrem system (vorausgesetzt, Ihr system unterstützt die POSIX).
Ist hier der HotKey-Modul, das versteckt die etwas verwirrende Anrufe zu manipulieren, die POSIX-termios-Strukturen.
Können Sie die Term::ReadKey - Modul zu überprüfen, ob ein Tastendruck.