my @elapse= (0); my %total; my %only; sub sub { push @elapse, 0; # ... my( $name, $time ); $total{$name} += $time; $only{$name} += $time; $only{$name} -= pop @elapse; $elapse[-1] += $time; }