/usr/share/perl5/Term/Size/Perl.pm is in libterm-size-perl-perl 0.029-3+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | package Term::Size::Perl;
use strict;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(chars pixels);
our $VERSION = 0.029;
=head1 NAME
Term::Size::Perl - Perl extension for retrieving terminal size (Perl version)
=head1 SYNOPSIS
use Term::Size::Perl;
($columns, $rows) = Term::Size::Perl::chars *STDOUT{IO};
($x, $y) = Term::Size::Perl::pixels;
=head1 DESCRIPTION
Yet another implementation of C<Term::Size>. Now
in pure Perl, with the exception of a C probe run
on build time.
=head2 FUNCTIONS
=over 4
=item B<chars>
($columns, $rows) = chars($h);
$columns = chars($h);
C<chars> returns the terminal size in units of characters
corresponding to the given filehandle C<$h>.
If the argument is omitted, C<*STDIN{IO}> is used.
In scalar context, it returns the terminal width.
=item B<pixels>
($x, $y) = pixels($h);
$x = pixels($h);
C<pixels> returns the terminal size in units of pixels
corresponding to the given filehandle C<$h>.
If the argument is omitted, C<*STDIN{IO}> is used.
In scalar context, it returns the terminal width.
Many systems with character-only terminals will return C<(0, 0)>.
=back
=head1 SEE ALSO
It all began with L<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 F<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
=head1 BUGS
I am having some hard time to make tests run correctly
under the C<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 C<Test::Harness> and
C<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.
=head1 AUTHOR
A. R. Ferreira, E<lt>ferreira@cpan.orgE<gt>
=head1 COPYRIGHT AND LICENSE
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.
=cut
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;
|