内容

名称

Term::Cap - Perl termcap 接口

概要

require Term::Cap;
$terminal = Term::Cap->Tgetent({ TERM => undef, OSPEED => $ospeed });
$terminal->Trequire(qw/ce ku kd/);
$terminal->Tgoto('cm', $col, $row, $FH);
$terminal->Tputs('dl', $count, $FH);
$terminal->Tpad($string, $count, $FH);

描述

这些是用于从终端功能 (termcap) 数据库中提取和使用功能的低级函数。

有关终端功能的更多信息,请参阅大多数类 Unix 系统上的 termcap 手册页。

方法

Tputs 的输出字符串为计数 1 缓存,以提高性能。TgotoTpad 不缓存。$self->{_xx} 是原始的 termcap 数据,而 $self->{xx} 是缓存的版本。

print $terminal->Tpad($self->{_xx}, 1);

TgotoTputsTpad 返回字符串,如果指定,还会将字符串输出到 $FH。

Tgetent

返回一个已祝福的对象引用,用户可以使用它来使用 TputsTgoto 将控制字符串发送到终端。

该函数从数据库中提取指定终端类型 TERM(默认为环境变量 TERM)的条目。

它将在环境中查找 TERMCAP 变量。如果找到,并且值不以斜杠开头,并且终端类型名称与环境字符串 TERM 相同,则使用 TERMCAP 字符串而不是读取 termcap 文件。如果它以斜杠开头,则该字符串用作要搜索的 termcap 文件的路径名。如果 TERMCAP 不以斜杠开头,并且名称与 TERM 不同,则 Tgetent 按此顺序搜索文件 $HOME/.termcap/etc/termcap/usr/share/misc/termcap,除非环境变量 TERMPATH 存在,在这种情况下,它指定要搜索的文件路径名列表(用空格或冒号分隔)代替。每当搜索多个文件并且 tc 字段出现在请求的条目中时,它命名的条目必须在同一个文件或后续文件中找到。如果 TERMCAP 环境变量字符串中包含 :tc=...:,它将继续在上述文件中搜索。

提取的 termcap 条目在对象中以 $self->{TERMCAP} 的形式提供。

它接受一个哈希引用作为参数,并带有两个可选键

OSPEED

终端输出比特率(通常错误地称为波特率) - 如果未设置,将生成警告,并将其默认设置为 9600。OSPEED 可以指定为 POSIX termios/SYSV termio 速度(其中 9600 等于 9600)或旧的 DSD 样式速度(其中 13 等于 9600)。

TERM

将使用其 termcap 条目的终端类型 - 如果未提供,则默认为 $ENV{TERM}:如果未设置,则 Tgetent 将报错。

它在失败时调用 croak

Tpad

输出一个带有适当填充的字面字符串,以适应当前终端。

它接受三个参数

$string

要输出的字面字符串。如果它以数字和可选的 '*' 开头,则填充将增加一个相对于此数字的量,如果存在 '*',则此量将乘以 $cnt。此部分 $string 在输出之前将被删除。

$cnt

将用于修改应用于字符串的填充,如上所述。

$FH

一个可选的文件句柄(或 IO::Handle),输出将打印到其中。

填充后的 $string 将被返回。

Tputs

输出给定功能的字符串,并进行适当的填充,没有任何参数替换。

它接受三个参数

$cap

要输出其字符串的功能。

$cnt

传递给 Tpad 的计数,用于修改应用于输出字符串的填充。如果 $cnt 为零或一,则生成的字符串将被缓存。

$FH

一个可选的文件句柄(或 IO::Handle),输出将打印到其中。

将返回该功能的适当字符串。

Tgoto

Tgoto 使用给定的参数解码光标寻址字符串。

有四个参数

$cap

要输出的功能的名称。

$col

要替换到输出字符串中的第一个值(通常是光标寻址功能中的列)。

$row

要替换到输出字符串中的第二个值(通常是光标寻址功能中的行)。

$FH

一个可选的文件句柄(或 IO::Handle),输出字符串将被打印到该句柄。

使用以下 sprintf() 行格式在输出字符串中用 $col 和 $row 进行替换。

%%   output `%'
%d   output value as in printf %d
%2   output value as in printf %2d
%3   output value as in printf %3d
%.   output value as in printf %c
%+x  add x to value, then do %.

%>xy if value > x then add y, no output
%r   reverse order of two parameters, no output
%i   increment by one, no output
%B   BCD (16*(value/10)) + (value%10), no output

%n   exclusive-or all parameters with 0140 (Datamedia 2500)
%D   Reverse coding (value - 2*(value%16)), no output (Delta Data)

输出字符串将被返回。

Trequire

以功能列表作为参数,如果找不到功能,则会抛出异常。

示例

use Term::Cap;

# Get terminal output speed
require POSIX;
my $termios = POSIX::Termios->new;
$termios->getattr;
my $ospeed = $termios->getospeed;

# Old-style ioctl code to get ospeed:
#     require 'ioctl.pl';
#     ioctl(TTY,$TIOCGETP,$sgtty);
#     ($ispeed,$ospeed) = unpack('cc',$sgtty);

# allocate and initialize a terminal structure
my $terminal = Term::Cap->Tgetent({ TERM => undef, OSPEED => $ospeed });

# require certain capabilities to be available
$terminal->Trequire(qw/ce ku kd/);

# Output Routines, if $FH is undefined these just return the string

# Tgoto does the % expansion stuff with the given args
$terminal->Tgoto('cm', $col, $row, $FH);

# Tputs doesn't do any % expansion.
$terminal->Tputs('dl', $count = 1, $FH);

版权和许可

版权所有 1995-2015 (c) perl5 维护者。

本软件是自由软件,可以在与 Perl 本身相同的条款下进行修改和分发。

有关 Perl 许可证的详细信息,请参阅 Perl 源代码分发中的 README 文件。

作者

此模块是 Perl 核心分发的一部分,也由 Jonathan Stowe <[email protected]> 为 CPAN 维护。

代码托管在 Github 上:https://github.com/jonathanstowe/Term-Cap,请随时在那里进行分叉、提交补丁等。

另请参阅

termcap(5)