File Coverage

blib/lib/IO/Page.pm
Criterion Covered Total %
statement 10 21 47.6
branch 2 16 12.5
condition n/a
subroutine 4 4 100.0
pod n/a
total 16 41 39.0


line stmt bran cond sub pod time code
1             package IO::Page;
2              
3 1     1   751 use strict;
  1         1  
  1         46  
4 1     1   5 use vars qw( $VERSION );
  1         1  
  1         279  
5              
6             $VERSION = '0.02';
7              
8             local( *PAGER, *STDOLD, ) ;
9              
10             BEGIN {
11 1     1   2 my( $try, $pager, ) ;
12            
13 1 50       102 if ( -t STDOUT ) {
14             # only bother to check if we're going to page
15             # other fallbacks could be `which less`, `which more`, etc
16             TRY:
17 0         0 foreach $try ( $ENV{PAGER},
18             '/usr/local/bin/less',
19             '/usr/bin/less',
20             '/usr/bin/more',
21             ) {
22 0         0 eval { chomp $try } ;
  0         0  
23 0 0       0 if ( -x $try ) {
24 0         0 $pager = $try ;
25 0         0 last TRY ;
26             }
27             }
28              
29 0 0       0 die "Couldn't find a pager!\n" unless -x $pager ;
30              
31 0 0       0 open PAGER, "| $pager"
32             or die "Can't pipe to $pager: $!" ;
33 0 0       0 open STDOLD, ">&STDOUT"
34             or die "Can't save STDOUT: $!" ;
35 0 0       0 open STDOUT, ">&PAGER"
36             or die "Can't dup STDOUT to PAGER: $!" ;
37             }
38             }
39              
40             END {
41 1 50   1   190 if ( fileno STDOLD ) {
42 0 0       0 open STDOUT, ">&STDOLD"
43             or die "Can't restore STDOUT: $!" ;
44             }
45 1         7 close PAGER ;
46             }
47              
48             # module loaded OK!
49             1 ;
50              
51             __END__