#!/usr/bin/perl
#---------------------------------------------------------------------
+-------
# Copyright (C) 2001-2003 Ed Halley
#---------------------------------------------------------------------
+-------
=head1 NAME
peek - eat lines of standard input; output a one-line preview instead
=head1 SYNOPSIS
tar jcvf home.tar.bz2 /home | peek
=head1 DESCRIPTION
The peek process reads line-oriented text from the standard input, and
outputs each line atop each other on the standard output. This is use
+ful
for reducing visual clutter in large list-oriented processing while
keeping some visual feedback of the progress.
There are a few options to customize the style, but the defaults are
usually quite sufficient.
=cut
#---------------------------------------------------------------------
+--------
use Getopt::Long;
use warnings;
use strict;
my $wide = 79;
my $keep = 0;
my %options =
( 'wide|width=i' => \$wide,
'keep!' => \$keep,
);
GetOptions(%options) or die;
$wide = 0 if $wide < 1;
#---------------------------------------------------------------------
+--------
$| = 1;
while (<>)
{
chomp;
tr{\n\t}{\r };
printf "%-${wide}.${wide}s\r", $_;
}
print ' 'x$wide, "\r" if not $keep;
print "\n" if $keep;
exit(0);
__END__
#---------------------------------------------------------------------
+--------
=head1 OPTIONS
=over 4
=item B<--width>=[integer]
Truncates the output lines to the given width, so as to avoid any line
wrapping issues. Default is 79 characters wide.
=item B<--keep>
The final line of output is left visible on the display.
=head1 BUGS
The --width should default to the current terminal width, if it can be
determined.
This animation assumes that a carriage return (as opposed to a newline
+ or
linefeed) will not erase the current line, but will return the output
cursor to the beginning of the current line. This is a common convent
+ion
and holds true for many POSIX-styled terminals, but may not work for a
+ll
output devices.
=head1 LICENSE
Copyright (C) 2001-2003 Ed Halley <ed@halley.cc>
This program is free software; you can redistribute it and/or modify i
+t
under the same terms as Perl itself. For details on the Perl Artistic
License, read the F<http://www.perl.com/language/misc/Artistic.html>
page.
=cut
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|