#!/usr/bin/perl use warnings; use strict; use File::ReadBackwards; use Data::Dumper; my $fh_in = File::ReadBackwards->new($ARGV[0]) or die("Unable to open \"$_\": $!\n"); my ($line,$source_host,$my_host,$internal_redirect,$date,$url_with_method,$status,$size,$referrer,$agent,$end_time,$check_time,$vhost_name); while (defined($line = $fh_in->readline())) { chomp($line); print "$line|\n"; ($source_host,$my_host,$internal_redirect,$date,$url_with_method,$status,$size,$referrer,$agent) = $line =~ m@^(\S+?), (\S+) (\S+) - - \[(\d{2}/\w+/\d{4}:\s*\d{2}:\d{2}:\s*\d{2} \+\d{4})\] "(.*?)" (\d{3}) (\d+) "(.*?)" "(.*?)"@; print Data::Dumper->Dump( [ \$line, \$source_host,\$my_host,\$internal_redirect,\$date,\$url_with_method,\$status,\$size,\$referrer,\$agent ], [qw(*line *source_host *my_host *internal_redirect *date *url_with_method *status *size *referrer *agent)], ), qq{\n}; print "SH:$source_host, MH:$my_host, IR:$internal_redirect, D:$date, U:$url_with_method, S:$status, SZ:$size, R:$referrer, A:$agent\n"; }