1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/usr/bin/perl -w
-
- use strict;
- use warnings;
-
- use Getopt::Long;
-
- my $opts;
- $opts->{no_header} = 0;
- $opts->{delay} = 2;
- $opts->{frames} = "-/|\\";
-
- GetOptions (
- "no-header" => \$opts->{no_header},
- "usage" => \$opts->{usage},
- "help" => \$opts->{usage},
- "delay=i" => \$opts->{delay},
- "frames=s" => \$opts->{frames},
- ) or &usage;
-
- &usage if $opts->{usage};
-
- sub usage {
- print "usage: watchdump.pl --no-header --delay=SEC --frames=CHARS FILE\n";
- exit 0;
- }
-
- my @frames = split "", $opts->{frames};
- my $frame_num = 0;
-
- sub get_frame {
- my $frame = $frames[$frame_num];
- $frame_num++;
- $frame_num = 0 if $frame_num > $#frames;
- return $frame;
- }
-
- sub clear {
- system "cls" if -d "c:\\windows";
- system "clear" if -f "/bin/ls";
- }
-
- my $file = shift @ARGV or &usage;
-
- while (1) {
- &clear;
- system "title $file" if -d "c:\\windows";
- printf "[%s] watching: %s\n%s\n", &get_frame(), $file, "=" x 80
- unless $opts->{no_header};
- if (open my $fh, "<", $file) {
- print join "", <$fh>;
- close $file;
- } else { warn "cannot open $file: $!\n"; next; }
- } continue {
- sleep $opts->{delay};
- }
|