my %chooseHash = (); foreach my $satz (@chooseList) { $chooseHash{$satz->{list}}[$satz->{value}] = $satz->{text}; } sub getStringChoose2 { my ($hash,$ids,$list) = @_; my $string = join ", ", @{$chooseHash{$list}}[@$ids]; return $string || " - "; } say getStringChoose2 ( \%chooseHash, [3,10], 'optionsMemberRolle');