Term::Size::Perl - Perl extension for retrieving terminal size (Perl version)


Term-Size-Perl documentation Contained in the Term-Size-Perl distribution.

Index


Code Index:

NAME

Top

Term::Size::Perl - Perl extension for retrieving terminal size (Perl version)

SYNOPSIS

Top

    use Term::Size::Perl;

    ($columns, $rows) = Term::Size::Perl::chars *STDOUT{IO};
    ($x, $y) = Term::Size::Perl::pixels;

DESCRIPTION

Top

Yet another implementation of Term::Size. Now in pure Perl, with the exception of a C probe run on build time.

FUNCTIONS

chars
    ($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.

pixels
    ($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).

SEE ALSO

Top

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

BUGS

Top

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.

AUTHOR

Top

A. R. Ferreira, <ferreira@cpan.org>

COPYRIGHT AND LICENSE

Top


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;