The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.114

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.