IO::Pager - Select a pager and pipe text to it if destination is a TTY
# Select an appropriate pager and set the PAGER environment variable use IO::Pager; # Optionally, pipe output to it { # TIMTOWTDI, not an exhaustive list but you can infer the others my $token = IO::Pager::open *STDOUT; # Unbuffered is default subclass my $token = new IO::Pager *STDOUT, 'Unbuffered'; # Specify subclass my $token = IO::Pager::Unbuffered::open *STDOUT; # Must 'use' class! my $token = new IO::Pager::Unbuffered *STDOUT; # Must 'use' class! print <<" HEREDOC" ; ... A bunch of text later HEREDOC # $token passes out of scope and filehandle is automagically closed # NOT YET IMPLEMENTED XXX } { # You can also use scalar filehandles... my $token = IO::Pager::open($FH) or warn($!); print $FH "No globs or barewords for us thanks!\n"; } { # ...or an object interface my $token = new IO::Pager::Buffered; $token->print("OO shiny...\n"); }
IO::Pager can be used to locate an available pager and set the PAGER environment variable (see "NOTES"). It is also a factory for creating I/O objects such as IO::Pager::Buffered and IO::Pager::Unbuffered.
IO::Pager subclasses are designed to programmatically decide whether or not to pipe a filehandle's output to a program specified in PAGER. Subclasses may implement only the IO handle methods desired and inherit the remainder of those outlined below from IO::Pager. For anything else, YMMV. See the appropriate subclass for implementation specific details.
An alias for open.
Instantiate a new IO::Pager, which will paginate output sent to FILEHANDLE if interacting with a TTY.
Save the return value to check for errors, use as an object, and (NOT YET IMPLEMENTED) implicitly close the handle when the variable passes out of scope.
You may provide a glob or scalar.
Defaults to currently select()-ed FILEHANDLE.
Specifies which variety of IO::Pager to create. This accepts fully qualified packages IO::Pager::Buffered, or simply the third portion of the package name Buffered for brevity.
Defaults to IO::Pager::Unbuffered.
Returns false and sets $! on failure, same as perl's open.
open
Explicitly close the filehandle, this stops any redirection of output on FILEHANDLE that may have been warranted.
Normally you'd just wait for the object to pass out of scope. NOT YET IMPLEMENTED
This does not default to the current filehandle.
Used to set the I/O layer a.k.a. discipline of a filehandle, such as ':utf8' for UTF-8 encoding.
':utf8'
print() to the filehandle.
printf() to the filehandle.
syswrite() to the filehandle.
The location of the default pager.
If the location in PAGER is not absolute, PATH may be searched.
See "NOTES" for more information.
IO::Pager may fall back to these binaries in order if PAGER is not executable.
The algorithm for determining which pager to use is as follows:
If the PAGER environment variable is set, use the pager it identifies, unless this pager is not available.
Try the standard, hardcoded paths in "FILES".
If File::Which is available, use the first pager possible amongst less, most, w3m, lv, pg and more.
less
most
w3m
lv
pg
Set PAGER to more, and cross our fingers.
more
Steps 1, 3 and 4 rely upon the PATH environment variable.
IO::Pager::Buffered, IO::Pager::Unbuffered, IO::Pager::Page,
IO::Page, Meta::Tool::Less
Jerrad Pierce <jpierce@cpan.org>
Florent Angly <florent.angly@gmail.com>
This module was inspired by Monte Mitzelfelt's IO::Page 0.02
Copyright (C) 2003-2012 Jerrad Pierce
Thou shalt not claim ownership of unmodified materials.
Thou shalt not claim whole ownership of modified materials.
Thou shalt grant the indemnity of the provider of materials.
Thou shalt use and dispense freely without other restrictions.
Or, if you prefer:
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.0 or, at your option, any later version of Perl 5 you may have available.
To install IO::Pager, copy and paste the appropriate command in to your terminal.
cpanm
cpanm IO::Pager
CPAN shell
perl -MCPAN -e shell install IO::Pager
For more information on module installation, please visit the detailed CPAN module installation guide.