$ perl -MTie::Cycle -E 'tie $i, Tie::Cycle, [0..3]; push @{ $h{$i} }, $_ for 1..12' $VAR1 = { '2' => [ 3, 7, 11 ], '1' => [ 2, 6, 10 ], '0' => [ 1, 5, 9 ], '3' => [ 4, 8, 12 ] };