NAME
Prty::Terminal - Ein- und Ausgabe aufs Terminal
BASE CLASS
METHODS
Klassenmethoden
askUser() - Erfrage vom Benutzer einen Wert
Synopsis
$val = $class->askUser($text,@opt);
Description
Fordere den Benutzer mit Prompt $text zur Eingabe eines Werts auf. Der vom Benutzer eingegebene Wert wird zurückgeliefert. Whitespace am Anfang und am Ende des Werts werden entfernt.
Options
- -automatic => $bool (Default: 0)
-
Stelle keine Frage an den Benutzer, sondern liefere den Defaultwert. Ist kein Defaultwert angegeben, wirf eine Exception. Diese Option ist für Programme nützlich, die auch ohne Benutzerinteraktion ablaufen können.
- -default => $default (Default: keiner)
-
Liefere $default, wenn der Benutzer keinen Wert eingibt. An den Prompt wird die Zeichenkette " ($default) " angehängt.
- -inHandle => $fh (Default: *STDIN)
-
Filehandle, von der die Benutzereingabe gelesen wird.
- -outHandle => $fh (Default: *STDOUT)
-
Filehandle, auf die der Prompt geschrieben wird.
- -timer => \$t (Default: undef)
-
Addiere Antwortzeit des Benutzer zu Zeitvariable $t hinzu. Dieses Feature kann genutzt werden, um aus einer Zeitmessung des rufenden Code die (langsame) Antwortzeit des Benutzers herauszunehmen.
my $t0 = Time::HiRes::gettimeofday; ... Prty::Terminal->askUser($prompt, -timer=>\$t0, ... ); ... printf "Elapsed: %.2f\n",Time::HiRes::gettimeofday-$t0;
Achtung: Der Wert der Zeitvariable wird in die Zukunft verschoben und sollte daher nur zur Zeitdauermessung verwendet werden.
- -ttyIn => $bool (Default: 0)
-
Lies Eingabe vom Terminal. Der Terminal-Eingabekanal (/dev/tty) wird mit jedem Aufruf geöffnet und geschlossen.
- -ttyOut => $bool (Default: 0)
-
Schreibe Ausgabe auf Terminal. Der Terminal-Ausgabekanal (/dev/tty) wird mit jedem Aufruf geöffnet und geschlossen.
- -values => $valSpec (Default: keiner)
-
Liste der zulässigen Antworten. Ist die Antwort nicht in der Liste enthalten, wird die Frage erneut gestellt.
Example
Eingabe vom Terminal statt von STDIN per Filehandle:
my $tty = Prty::FileHandle->new('<','/dev/tty');
my $val = Prty::Terminal->askUser($prompt,-inHandle=>$tty);
$tty->close;
Dasselbe per Option:
my $val = Prty::Terminal->askUser($prompt,-ttyIn=>1);
ansiEsc() - Liefere ANSI Terminal Escape-Sequenz
Synopsis
$esc = $class->ansiEsc($str);
Description
Liefere die Terminal Escape-Sequenz $esc für die in $str angegebenen Terminal-Eigenschaften. Es kann eine Kombination aus Eigenschaften angegeben werden. Die Eigenschaften werden durch Leerzeichen getrennt.
Beginnt $str mit ESC, d.h. ist $str bereits eine Escape-Sequenz, wird $str unverändert zurückgeliefert.
Terminal-Eigenschaften
Allgemein Vordergrund Hintergrund
----------- ----------- -----------
dark black on_black
bold red on_red
underline green on_green
blink yellow on_yellow
reverse blue on_blue
concealed magenta on_magenta
reset cyan on_cyan
white on_white
Example
Rote Schrift:
Prty::Terminal->ansiEsc('red');
Fette weiße Schrift auf rotem Grund:
Prty::Terminal->ansiEsc('bold white on_red');
Terminal in den Anfangszustand zurückversetzen:
Prty::Terminal->ansiEsc('reset');
VERSION
1.110
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2017 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.