use strict;
my $file = "path to debug log";
my $attachments = {};
my %refids = ();
open FILE, $file;
while (<FILE>) {
chomp;
my ($idtext,undef) = split / /;
my $id = substr $idtext, 1, 5;
if ($id == 40182) {
my ($refid) = (/{(0x[^}]{3,4})}/);
my ($email) = (/} {([^@]+@[^}]+)}/);
$refids{$refid} = $email;
}
if ($id == 40000 and
/ Operation completed successfully - Attachment=/) {
# 3.6 log
my ($email) = (/[{\(]([^\({\@]+\@[^}\)]+)[}\)]/);
my ($filename) = (/\)\sOperation\scompleted
\ssuccessfully\s-\sAttachment=(.+),\sSuccess=/x);
my $timestamp = substr $_, 9, 14;
if ($attachments->{$email}->{$filename}) {
$attachments->{$email}->{$filename}->{endtime} = $timestamp;
} else {
$attachments->{$email}->{$filename}->{starttime} = $timestamp;
}
}
if ($id == 30000 and /, Attachment=([^,]+), Attachment conversion/) {
# 4.0 log
my $filename = $1;
my ($refid) = (/{(0x[^}]{3,4})}/);
my $email = $refids{$refid};
my $timestamp = substr $_, 9, 14;
if ($attachments->{$email}->{$filename}) {
$attachments->{$email}->{$filename}->{endtime} = $timestamp;
} else {
$attachments->{$email}->{$filename}->{starttime} = $timestamp;
}
}
}
foreach my $email (keys %{ $attachments }) {
foreach my $attachment (keys %{ $attachments->{$email} }) {
my $start_time = $$attachments{$email}{$attachment}{starttime};
my $end_time = $$attachments{$email}{$attachment}{endtime};
print "$email\t$attachment\t$start_time\t$end_time\n";
}
}