---
name: "Term::Cap"
section: "3pm"
platform: "linux"
package: "perl-5.004-doc"
version: "5.004.05-6"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/Term::Cap/3pm"
---

# Term::Cap(3pm)

Perl termcap interface

## NAME

Term::Cap - Perl termcap interface

## SYNOPSIS

```
    require Term::Cap;
    $terminal = Tgetent Term::Cap { 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);
```

## DESCRIPTION

These are low-level functions to extract and use capabilities from a terminal capability (termcap) database.

The **Tgetent** function extracts the entry of the specified terminal type *TERM* (defaults to the environment variable *TERM*) from the database.

It will look in the environment for a *TERMCAP* variable.  If found, and the value does not begin with a slash, and the terminal type name is the same as the environment string *TERM*, the *TERMCAP* string is used instead of reading a termcap file.  If it does begin with a slash, the string is used as a path name of the termcap file to search.  If *TERMCAP* does not begin with a slash and name is different from *TERM*, **Tgetent** searches the files *$HOME/.termcap*, */etc/termcap*, and */usr/share/misc/termcap*, in that order, unless the environment variable *TERMPATH* exists, in which case it specifies a list of file pathnames (separated by spaces or colons) to be searched **instead**.  Whenever multiple files are searched and a tc field occurs in the requested entry, the entry it names must be found in the same file or one of the succeeding files.  If there is a `:tc=...:` in the *TERMCAP* environment variable string it will continue the search in the files as above.

*OSPEED* is the terminal output bit rate (often mistakenly called the baud rate).  *OSPEED* can be specified as either a POSIX termios/SYSV termio speeds (where 9600 equals 9600) or an old BSD-style speeds (where 13 equals 9600).

**Tgetent** returns a blessed object reference which the user can then use to send the control strings to the terminal using **Tputs** and **Tgoto**.  It calls `croak` on failure.

**Tgoto** decodes a cursor addressing string with the given parameters.

The output strings for **Tputs** are cached for counts of 1 for performance. **Tgoto** and **Tpad** do not cache.  `$self->{_xx}` is the raw termcap data and `$self->{xx}` is the cached version.

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

**Tgoto**, **Tputs**, and **Tpad** return the string and will also output the string to `$FH` if specified.

The extracted termcap entry is available in the object as `$self->{TERMCAP}`.

## EXAMPLES

```
    # Get terminal output speed
    require POSIX;
    my $termios = new POSIX::Termios;
    $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
    $terminal = Tgetent Term::Cap { 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);
```
