| Term-Size-Perl documentation | Contained in the Term-Size-Perl distribution. |
Term::Size::Perl - Perl extension for retrieving terminal size (Perl version)
use Term::Size::Perl;
($columns, $rows) = Term::Size::Perl::chars *STDOUT{IO};
($x, $y) = Term::Size::Perl::pixels;
Yet another implementation of Term::Size. Now
in pure Perl, with the exception of a C probe run
on build time.
($columns, $rows) = chars($h);
$columns = chars($h);
chars returns the terminal size in units of characters
corresponding to the given filehandle $h.
If the argument is ommitted, *STDIN{IO} is used.
In scalar context, it returns the terminal width.
($x, $y) = pixels($h);
$x = pixels($h);
pixels returns the terminal size in units of pixels
corresponding to the given filehandle $h.
If the argument is ommitted, *STDIN{IO} is used.
In scalar context, it returns the terminal width.
Many systems with character-only terminals will return (0, 0).
It all began with Term::Size by Tim Goodwin. You may want to have a look at:
Term::Size
Term::Size::Unix
Term::Size::Win32
Term::Size::ReadKey
It would be helpful if you send me the Params.pm generated by the probe at build time. Please reports bugs via CPAN RT, http://rt.cpan.org/NoAuth/Bugs.html?Dist=Term-Size-Perl
I am having some hard time to make tests run correctly
under the cpan script. Some Unix systems do not seem to provide a
working tty inside automatic installers. I think it needs
some skip tests, but I am yet not sure what should be the
portable tests for this.
Update:
This distribution uses new tests to skip if filehandle
is not a tty. It was noticed that Test::Harness and
prove, for instance, provide a non-tty STDOUT
to the test script and automatic installers
could provide a non-tty STDIN. So the former tests
were basically wrong. I am improving my understanding
of the involved issues and I hope to soon fix the
tests for all of Term::Size modules.
A. R. Ferreira, <ferreira@cpan.org>
Copyright (C) 2006-2007 by A. R. Ferreira
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Term-Size-Perl documentation | Contained in the Term-Size-Perl distribution. |
package Term::Size::Perl; use strict; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(chars pixels); our $VERSION = 0.029;
require Term::Size::Perl::Params; my %params = Term::Size::Perl::Params::params(); # ( row, col, x, y ) sub _winsize { my $h = shift || *STDIN; return unless -t $h; my $sz = "\0" x $params{winsize}{sizeof}; ioctl($h, $params{TIOCGWINSZ}{value}, $sz) or return; return unpack $params{winsize}{mask}, $sz; } sub chars { my @sz = _winsize(shift); return unless @sz; return @sz[1, 0] if wantarray; return $sz[1]; } sub pixels { my @sz = _winsize(shift); return unless @sz; return @sz[2, 3] if wantarray; return $sz[2]; } 1;