Term::Size - Perl extension for retrieving terminal size |
Term::Size - Perl extension for retrieving terminal size
use Term::Size;
($columns, $rows) = Term::Size::chars *STDOUT{IO}; ($x, $y) = Term::Size::pixels;
Term::Size is a Perl module which provides a straightforward way to retrieve the terminal size.
Both functions take an optional filehandle argument, which defaults to
*STDIN{IO}
. They both return a list of two values, which are the
current width and height, respectively, of the terminal associated with
the specified filehandle.
Term::Size::chars
returns the size in units of characters, whereas
Term::Size::pixels
uses units of pixels.
In a scalar context, both functions return the first element of the list, that is, the terminal width.
The functions may be imported.
If you need to pass a filehandle to either of the Term::Size
functions, beware that the *STDOUT{IO}
syntax is only supported in
Perl 5.004 and later. If you have an earlier version of Perl, or are
interested in backwards compatibility, use *STDOUT
instead.
1. Refuse to run in a too narrow window.
use Term::Size;
die "Need 80 column screen" if Term::Size::chars *STDOUT{IO} < 80;
2. Track window size changes.
use Term::Size 'chars';
my $changed = 1;
while (1) { local $SIG{'WINCH'} = sub { $changed = 1 };
if ($changed) { ($cols, $rows) = chars; # Redraw, or whatever. $changed = 0; } }
Both functions return undef
if there is an error.
If the terminal size information is not available, the functions
will normally return (0, 0)
, but this depends on your system. On
character only terminals, pixels
will normally return (0, 0)
.
It only works on Unix systems.
Tim Goodwin, <tim@uunet.pipex.com>, 1997-04-23.
Term::Size - Perl extension for retrieving terminal size |