use strict;
use warnings;

my %teilnehmer = (
  guenther    => 27,
  christian   => 22,
  mario       => 26,
  martin      => 26,
  joachim     => 30,
  rudi        => 23,
  fritz       => 50,
  dennis      => 39,
  daniel      => 21,
  );

my @tn    = keys   %teilnehmer;
my @alter = values %teilnehmer;

my $i=0;
foreach (sort {$a <=> $b} @alter) {
    printf "%s: %s\n", ++$i, $_;
}

my $i=0;
foreach (
   sort {substr($a,1,1) cmp substr($b,1,1)} 
   @tn) {
    printf "%s: %s\n", ++$i, $_;
}

my @namen = sort 
  {$teilnehmer{$a} <=> $teilnehmer{$b}}
        keys %teilnehmer;

my $i=0;
foreach (@namen) {
    printf "%s: %s %s\n", 
        ++$i, $_, $teilnehmer{$_};
}