local( *SAVESTDOUT ); open( SAVESTDOUT, ">&STDOUT" ) or warn "Can't dup STDOUT: $!\n"; my $pager = $ENV{PAGER} || 'more'; open( STDOUT, "| $pager" ) or die "Can't open pipe to $pager: $!\n"; while( ) { print "Wubba: $_" if /wubba/i; } close( STDOUT ); open( STDOUT, ">&SAVESTDOUT ) or warn "Can't dup SAVESTDOUT: $!\n";