use strict; my @freq; my @same; use constant MAX => 10; my $running = 1; $SIG{INT} = sub { $running = 0 }; # keep running until Control-C'd while ($running) { my $value = int rand MAX; $freq[$value]++; substr( $_,0,0 ) = $value; s#^((.)\2*)(.*)#$1#s; next unless length( $3 ) > 1; $same[substr $3,0,1]->{length $3}++; } my $total; foreach (0..MAX-1) { $total += $freq[$_]; my $ref = $same[$_]; print qq{\n$_($freq[$_]): @{[map {"$_($ref->{$_}x)"} sort {$a <=> $b} keys %{$ref}]}}; } print "\n$total total\n";