#!/usr/bin/perl -w use Tie::File; use strict; my $max = 512; my $file = 'syslog'; tie my @lines, 'Tie::File', $file; my $size = 0; for my $line (reverse -@lines .. -1) { if (($size += length $lines[$line]) > $max) { splice @lines, 0, (@lines + $line + 1); last; } } untie @lines;