use strict; use warnings; use Time::Local; my @data = ; my @component = qw(HPOvXpl HPOvSecCo HPOvBbc HPOvSecCC HPOvCtrl HPOvDepl HPOvConf HPOvPacc HPOvPerfMI HPOvGlanc HPOvPerfAgt HPOvPerlA HPOvAgtLc HPOvEaAgt HPOvOpsAgt ); install ($_) for @component; sub install { my ($component) = @_; my @cmpstartinstall = grep {/Installing the $component package/} @data; my @startime = map {/^\[(.+?)\]/; $1;} @cmpstartinstall; my $cmpstart = asEpoch ($startime[0]); my @endtime = map {/^\[(.+?)\]/; $1;} grep {/The component package $component installed successfully/} @data; my $cmpend = asEpoch ($endtime[0]); return if ! defined $cmpstart || ! defined $cmpend; my $diff = $cmpend - $cmpstart; print "$component: $diff\n"; } sub asEpoch { my ($time) = @_; return if ! defined $time; return if $time !~ /^([\d]+)\/(\d+)\/(\d+)\s+(\d+):(\d+):(\d+)/; my ($mon, $mday, $year, $hour, $min, $sec) = ($1, $2, $3, $4, $5, $6); $mon--; $year += 2000 if $year < 100; return timelocal ($sec, $min, $hour, $mday, $mon, $year); } __DATA__ ... [12/21/10 18:39:22] [oasetup] [oasetup] [INFO] Installing the HPOvXpl package... ... [12/21/10 18:39:24] [oasetup] [oasetup] [INFO] The component package HPOvXpl installed successfully [12/21/10 18:39:24] [oasetup] [oasetup] [INFO] Installing the HPOvSecCo package... ... [12/21/10 18:39:24] [oasetup] [oasetup] [INFO] The component package HPOvSecCo installed successfully