#!/usr/bin/perl #this is equivalent to the basic more program presented in the book use strict; my $SCREEN_ROWS = 23; my $c=$#ARGV+1; if ($c==0) { do_more_of(\*STDIN); } else { while (@ARGV) { my $name=shift; open(FILE, $name) || die("skipping $name..."); do_more_of(\*FILE); } } sub do_more_of { my $num_of_lines=$SCREEN_ROWS; my $stream=shift; while(1) { if ($num_of_lines == 0) { $num_of_lines=get_user_input(); if ($num_of_lines==-1) { last; } } else { my $line=<$stream>; if ($line) { print $line; } else { return; } $num_of_lines--; } } } sub get_user_input { print "\033[7m more? \033[m"; my $c=; chomp($c); if ($c eq '') { return 1; } if ($c eq 'q') { return -1; } if ($c eq ' ') { return $SCREEN_ROWS; } return 0; }