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.

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

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2023 Frank Seitz

LICENSE

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