use strict; use warnings; use Data::Dumper; my @array=qw(a b c d e); my $num = 13; my %result; $result{do{my$v=shift@array;push@array,$v;$v}}++while$num--; print Dumper \%result;