#!/opt/perl/bin/perl -w # # View printer output # use strict; use File::stat; $| = 1; my $DIR = "/usr/tmp/lpout"; my $PAGER = ($ENV{'PAGER'} || "more"); my $PDFVIEW = "acroread"; $SIG{'PIPE'} = "IGNORE"; while (1) { my @data = (); opendir(DIR, $DIR) or die "Can't opendir `$DIR': $!\n"; foreach (sort readdir(DIR)) { /^([0-9][0-9][0-9])\.pdf$/ and do { my $mtime = stat("$DIR/$_")->mtime or die "stat: $!\n"; push @data, [$1, $mtime]; }; } close(DIR); scalar(@data) or die "No files found\n"; print "\033[H\033[2J"; open(PIPE, "|-", $PAGER) or die "Can't execute \`$PAGER': $!\n"; my $i = 1; foreach (@data) { my ($name, $mtime) = @$_; printf PIPE "%3d: %-10s %s\n", $i++, $name, scalar(localtime($mtime)); } close(PIPE); print "\n Select: "; defined(my $tmp = ) or exit; chomp $tmp; $tmp eq "" and next; ($tmp !~ /^[\d]+$/ or ($tmp < 1 || $tmp > scalar(@data))) and do {print "Invalid response"; sleep 1; next}; my $f = ${$data[$tmp - 1]}[0]; system("$PDFVIEW '$DIR/$f.pdf'"); } .