#! /usr/bin/perl use File::stat; die "Usage: $0 \n" unless (@ARGV == 1); my $file = shift(@ARGV); $| = 1; undef $/; my $text = readtext(0); my $lastsize = length($text); my @lines = split("\n", $text); for (my $i = @lines > 10 ? @lines - 10 : 0; $i < @lines - 1; $i++) { print $lines[$i] . "\n"; } print $lines[@lines - 1]; if ($text =~ /\n$/) { print "\n"; } while (1) { sleep(1); my $newtext = readtext($lastsize); if ($newtext ne '') { print $newtext; $lastsize += length($newtext); } } sub readtext { my $from = shift; open($fd, "<", $file) || die "Cannot open $file: $!"; seek($fd, $from, 0) || die "Seek failed: $!"; my $newdata = <$fd>; close($fd); $newdata =~ s/\0*$//; return $newdata; }