NAME

Prty::Terminal - Ein- und Ausgabe aufs Terminal

BASE CLASS

Prty::Object

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.