NAME
Quiq::Terminal - Ein- und Ausgabe aufs Terminal
BASE CLASS
METHODS
Klassenmethoden
askUser() - Erfrage vom Benutzer einen Wert
Synopsis
$val = $class->askUser($text,@opt);
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.
- -sloppy => $bool (Default: 0)
-
Beschränke die möglichen Antworten nicht auf die Liste $valSpec.
- -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; ... Quiq::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.
- -timeout => $n
-
Liefere den Defaultwert nach $n Sekunden. Ist kein Defaultwert angegeben, wirf eine Exception. Diese Option ist für Programme nützlich, die einen automatischen Default-Ablauf haben, in den der Benutzer aber eingreifen kann, wenn er das Programm bedient.
- -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.
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.
Example
Eingabe vom Terminal statt von STDIN per Filehandle:
my $tty = Quiq::FileHandle->new('<','/dev/tty');
my $val = Quiq::Terminal->askUser($prompt,-inHandle=>$tty);
$tty->close;
Dasselbe per Option:
my $val = Quiq::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:
$esc = Quiq::Terminal->ansiEsc('red');
Fette weiße Schrift auf rotem Grund:
$esc = Quiq::Terminal->ansiEsc('bold white on_red');
Terminal in den Anfangszustand zurückversetzen:
$esc = Quiq::Terminal->ansiEsc('reset');
VERSION
1.205
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.