Pager


Connect to STDIN for paging


examples/shell/page.pl
use strict;
use warnings;

if (not @ARGV) {
    die "Usage: $0 command    to page the output of the given command \n";
}

my $SIZE = 10;
my $cnt = $SIZE;
open my $ph, '-|', "@ARGV" or die;
while (my $line = <$ph>) {
    print $line;
    $cnt--;
    if ($cnt <= 0) {
        print "---";
        my $in = <STDIN>;
        chomp $in;
        if ($in eq ' ') {
            $cnt = $SIZE;
        } elsif ($in eq 'q') {
            last;
        } else {
            $cnt = 1;
        }
    }
}
close $ph;