use strict; use warnings; my ($tot1, $tot2); while () { chomp; s/\s+$//g; next unless /TP Service Request$/ or /P5 Move request$/; my ($datetime, $ms, $inid, $message) = split /,/, $_; my $date = substr $datetime,11; my ($hours, $min, $sec) = map { $_ * 1000} split /:/, $date; $hours *= 60 * 60; $min *= 60; my $total_time = $hours + $min + $sec + $ms; $tot1 = $total_time if $message eq "TP Service Request"; $tot2 = $total_time if $message eq "P5 Move request"; next unless defined $tot2; print "Duration is: ", $tot2 - $tot1, " ms.\n"; last; } __DATA__ 2014-05-29 10:22:21,880,165ab6a8-e736-11e3-8748-8d365226be24,TP Service Request 2014-05-29 10:22:21,962,165ab6a8-e736-11e3-8748-8d365226be24,ProcessName: TC ... (rest of data omitted from this post for brevity) #### $ perl log_files.pl Duration is: 46426 ms.