in reply to Help creating a data structure

Your key names have the form "s1" through "s23", which suggests you want an array. That will preserve order, but you could just as well sort those keys or construct an ordered list of them and take a slice.

my %pres_answ = map { "s$_", { name => $presentations{"s$_"}, grade => param("s$_"); } } 1..23; { local ($\, $,) = ("\n", "\t"); print @pres_answ{"s$_"}{qw/name grade/} for 1 .. 23; }

After Compline,
Zaxo