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

NAME

Quiq::Terminal - Ein- und Ausgabe aufs Terminal

BASE CLASS

Quiq::Object

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.

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

-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:

    Quiq::Terminal->ansiEsc('red');

Fette weiße Schrift auf rotem Grund:

    Quiq::Terminal->ansiEsc('bold white on_red');

Terminal in den Anfangszustand zurückversetzen:

    Quiq::Terminal->ansiEsc('reset');

VERSION

1.141

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.