seekで末尾からある程度のブロック後ろに移動したあと、
変数に代入していく、とかはダメかね。
1行の長さがある程度事前にわからないとダメだけど、
改行が見つからなかったら、今度はその2倍戻るとか。


open(FILE,"dekai.txt");

my $last;
my $offset = 1024;
TAIL: {
my $i;
seek(FILE, -$offset, 2);
until(eof) {
$i++;
$last = <FILE>;
}
if ($i == 1) { $offset *= 2; redo TAIL }
}

close(FILE);


うーん、やってみたものの、大して早くないかも知らん(−−;
まぁ276のでいいと思うのですが。ちょっと思いついたので書いてみますた。