Just a comment on your code, not exactly related to what you've
asked, but here goes anyway, as I was just reading about this last
night. You have these two lines.
($JUNK, $user, $JUNK) = split (/\s+/, $data_line);
...
($user, $IP, $machine, $VER, $JUNK, $PID, $JUNK, $SDAY, $SDATE, $start
+_time) = split (/\ /, $data_line);
When assigning to a list, you can assign to
undef to throw
away a value, thereby not creating a useless variable.
(undef, $user, undef) = split (/\s+/, $data_line);
...
($user, $IP, $machine, $VER, undef, $PID, undef, $SDAY, $SDATE, $start
+_time) = split (/\ /, $data_line);
This is explained in
perldata, under 'List value
constructors'. It also gets rid of the need to declare
$JUNK if you enable
strict 'vars', which you
probably should consider if you haven't already done so.