# my %goals; @goals{ qw( 11a 11b 22 33 ) } = (); my @flds = qw( id title summary ); if ($sqldata) { my %data; for my $d ( @$sqldata ) { my $g = $d->{ 'goal' }; # next unless exists $goals{ $g }; my %h; @h{ @flds } = @{ $d }{ @flds }; # hash slice assignment push @{ $data{ $g } }, \%h; } for my $g ( keys %data ) { $template ->param( "list$g" => $data{ $g } ); } }