in reply to Sorting apache log files

Well, either dws is right on the money (which is my guess too), or somehow you are really stuck in this ugly situation where you have a big, unsorted Apache log file. Say, perhaps, you are tossed a big concatenated log file from a cluster of 5 machines. guh..

After kicking the sysadmin who gave you such an ugly problem, I would first split the file down into smaller chunks (files, in this case) that your machine can handle. Here's a way to quickly split the file into separate files by month.
# untested. copy/paste errors from working code are possible. :) use FileHandle; my %files = (); while (<INPUT>) { # you can open the file by yourself :) # Get date of log line my $date; if (m|^[^\[]+\[\d+/(\w+)/(\d+)|) { $date = ("$1\_$2.log"); } else { next; } # reject bad log line if (! defined $files{$date}) { $files{$date} = new FileHandle; open $files{$date}, ">$date" or die "Couldn't open $date: $!\n"; } print { $files{$date} } $_; }