++'s all around!
cLive ;-)'s solution worked with a couple of minor tweaks. Here is the final working version.
#!/usr/bin/perl
use warnings;
use strict;
use Date::Manip;
use vars qw(%ipHash);
my $order=0;
while(<DATA>)
{
/ ^((\d{1,3}\.){3}\d{1,3}) # grab the IP address into $1
\s\-\s\-\s\[
(\d\d\/\w{3}\/\d\d(\d\d\:){3}\d\d) # grab the date into $3
\s\-\d{4}\]\s"\w{1,4}\s
([\/|\w|\.|_]+) # grab the file path into $5
/x;
$ipHash{$1}{'order'} = $order++;
$ipHash{$1}{'path'} = $5;
$ipHash{$1}{'date'} = $3;
$ipHash{$1}{'timestamp'} = &UnixDate($3,"%s");
}
for (sort { $ipHash{$a}{'order'} <=> $ipHash{$b}{'order'}; } keys %ipH
+ash) {
print "$_ => $ipHash{$_}{'date'}\t$ipHash{$_}{'path'}\n";
}
Notice, the only things that were changed from
cLive ;-)'s version was the
$a's in the final print statement had to be changed to
$_, and that the
'date' hash element held the nicely formatted date instead of the Unix timestamp.
Thanks, everyone!
enoch