#!/usr/bin/perl -w use strict; my @dls = 'dl01'..'dl20'; # what you start out with my $nusers = 5; my $vars; for (my $i = 0; $i < @dls; $i += $nusers) { push @{ $vars->{Dates} }, { EndDates => [ @dls[$i..$i+$nusers-1] ] }; } use Data::Dumper; print Dumper $vars; __END__ $VAR1 = { 'Dates' => [ { 'EndDates' => [ 'dl01', 'dl02', 'dl03', 'dl04', 'dl05' ] }, { 'EndDates' => [ 'dl06', 'dl07', 'dl08', 'dl09', 'dl10' ] }, { 'EndDates' => [ 'dl11', 'dl12', 'dl13', 'dl14', 'dl15' ] }, { 'EndDates' => [ 'dl16', 'dl17', 'dl18', 'dl19', 'dl20' ] } ] };