#! /usr/bin/perl -s open(IN, "bash testrun.sh 2>&1 |") || die; $lastname = ""; $result1 = ""; $result2 = ""; while () { print; chomp; if (/^LOG: duration: ([0-9\.]+) ms/) { $t = $1; $name = $lastname if $lastname ne ""; $lastname = ""; push(@data, $t); } else{ $lastname = $_; next if ($#data < 0); printresult(@data); @data=(); } } printresult(@data); print "\n"; print $result1; print "\n"; print $result2; sub printresult { my(@data) = @_; @data = sort @data; @data = @data[1..($#data - 1)]; $n = $#data + 1; $sum = 0; $sum += $_ for @data; $avg = $sum / $n; $sum2 = 0; $sum2 += ($_ - $avg)**2 for @data; $stddev = sqrt($sum2 / $n); $result1 .= sprintf("%4s: %7.2f (%6.2f)\n", $name, $avg, $stddev); $result2 .= sprintf("%.2f %.2f\n", $avg, $stddev); }