Term::Size - Retrieve terminal size on Unix
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.
*STDIN{IO}
Term::Size::chars returns the size in units of characters, whereas Term::Size::pixels uses units of pixels.
Term::Size::chars
Term::Size::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.
*STDOUT{IO}
*STDOUT
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; } }
If there is an error, both functions return undef in scalar context, or an empty list in list context.
undef
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).
(0, 0)
pixels
Term::Size only works on Unix systems, as it relies on the ioctl function to retrieve the terminal size. If you need terminal size in Windows, see Term::Size::Win32.
ioctl
Before version 0.208, chars and pixels used to return false on error.
chars
Term::Size::Any, Term::Size::Perl, Term::Size::ReadKey, Term::Size::Win32.
Tim Goodwin, <tim@uunet.pipex.com>, 1997-04-23.
Adriano Ferreira, <ferreira@cpan.org>, 2006-05-19.
Copyright (C) 1997-05-13 by Tim Goodwin.
You may redistribute them under the same terms as Perl itself.
To install Term::Size, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Term::Size
CPAN shell
perl -MCPAN -e shell install Term::Size
For more information on module installation, please visit the detailed CPAN module installation guide.