Term::Size::Win32 - Retrieve terminal size |
Term::Size::Win32 - Retrieve terminal size (on Windows)
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.
To be true, you don't need a Win32 machine to run this module. You need a working B<Win32::Console>. Of course, it is easier if you are in Win32.
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. (Well, this is not for you, Windows users.)
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)
.
To be true, in Win32, it always return (0, 0)
.
This version only works on Win32 systems.
I lied about the function argument: it is ignored by now, always using STD_INPUT_HANDLE. Need to work this out: mapping tty devices to appropriate Windows handles. (See Win32::Console docs.)
Unify this with via some unifying module like Term-Size-Any.
Tim Goodwin, <tim@uunet.pipex.com>, 1997-04-23. (The author of the original Unix-only version of this module.)
Adriano Ferreira, <ferreira@cpan.org>, 2006-05-19.
Copyright (C) 2006-2008 by Adriano R. Ferreira
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Term::Size::Win32 - Retrieve terminal size |