NAME

Term::Screen::ReadLine - Term::Screen extended with ReadLine

SYNOPSIS

  use lib "./blib/lib";

  use Term::Screen::ReadLine;

  $scr = new Term::Screen::ReadLine;

  $scr->clrscr();
  $a=$scr->getch();
  print $a," ",length $a," ",ord($a),"\n";
  $scr->two_esc;
  $a=$scr->getch();
  print $a," ",length $a," ",ord($a),"\n";
  $scr->one_esc;


  $scr->clrscr();
  $scr->at(4,4)->puts("input? ");
  $line=$scr->readline(ROW => 4, COL => 12);
  $line=$scr->readline(ROW => 5, COL => 12, DISPLAYLEN => 20);
  $scr->at(10,4)->puts($line);
  $scr->two_esc;
  $line=$scr->readline(ROW => 6, COL => 12, DISPLAYLEN => 20, ONLYVALID => "[ieIE]+", CONVERT => "up");

  print "\n";
  print $scr->lastkey(),"\n";

  $r=$scr->getch();
  print $r,ord($r),"\n";
  $r=ord($r);
  print $r,"\n";
  if ($r eq 13) { 
    print "aja!\n";
  }

exit;

DESCRIPTION

This module extends Term::Screen with a readline() function. It also makes it possible to use a *single* Esc to escape instead of the Term::Screen double Esc.

USAGE

readline()

  readline(
    ROW         => 0,
    COL         => 0,
    LEN         => 40,
    DISPLAYLEN  => undef,
    LINE        => "",
    ONLYVALID   => undef,
    CONVERT     => undef,
    PASSWORD    => undef,
    OVERWRITE   => undef,
  )

Parameters

ROW,COL

'at(ROW,COL) readline()...'.

LEN

The maximum length of the line to read.

DISPLAYLEN

The maximum length of the displayed field. The display will scroll if DISPLAYLEN is exceeded.

EXITS

Explained below.

LINE

A default value for readline to use.

ONLYVALID

A regex to validate the input.

CONVERT

"up" or "lo" for uppercase or lowercase. Empty ("") if not used. Note: conversion will take place after validation.

PASSWORD

Display stars ('*') instead of what is being typed in.

OVERWRITE

By default readline will clear characters from the current position to the end of the given field length. By setting OVERWRITE to a non-zero value will any characters visible in the field to be overwritten rather than removed.

Return value

    Returns The inputted line.

Notes

  • The readline() function does always return on the following keys: Enter, Arrow Up, Arrow Down, Esc, Tab and Ctrl-Enter/F4.

    This can be extended using the EXITS argument, which must be a hash of keys (see Term::Screen) and a description that will be returned for that key.

    example: EXITS => { "k1" => "help", "k3" => "cancel" }.

    This will bind 'F1' to a 'help' message and 'F3' to a 'cancel' message.

  • The readline() function will issue an exit(100), if a '\0' character is read. This is what usually happens when reading from STDIN does not give 'eof()' condition as would be nice, if a telnet session is suddenly killed. Not exiting on a '\0' character will result in a racing perl script.

last_key()

returns the last key pressed, that made the readline function return.

one_esc()

Makes it possible to press only one time Esc to make readline return. This is the default for Term::Screen::ReadLine.

two_esc()

Revert back to the standard Term::Screen behaviour for the Esc key.

AUTHOR

Hans Dijkema <oesterhol@cpan.org>

LICENSE

Artistic