c:\@Work\Perl\monks\fidda>perl -wMstrict -le "use List::MoreUtils qw(part); ;; use constant KEYS => qw(H1 H2 H3 H4); use constant ITEMS => 'A' .. 'O'; ;; my @steps = map { @$_, reverse @$_ } [ 0 .. KEYS-1 ]; ;; my $i = 0; my @parts = part { $steps[ $i++ % @steps ] } ITEMS; ;; my %h; @h{ KEYS() } = @parts; for my $k (KEYS) { printf qq{$k }; printf qq{'$_' } for @{ $h{$k} }; print ''; } " H1 'A' 'H' 'I' H2 'B' 'G' 'J' 'O' H3 'C' 'F' 'K' 'N' H4 'D' 'E' 'L' 'M'