sub cmpthese_times { my $rows = shift; my @widths; for my $row (@$rows) { next if $row->[1] =~ s/Rate/Time/; my ($value) = $row->[1] =~ m!(\d+)/s!; next unless defined $value; $row->[1] = sprintf '%6.2es', 1.0 / $value; } for my $row (@$rows) { $widths[$_] = max ($widths[$_] || 0, 1 + length $row->[$_]) for 0 .. $#$row; } my $format = "%-$widths[0]s"; $format .= "%$widths[$_]s" for 1 .. $#widths; $format .= "\n"; printf $format, @$_ for @$rows; }