use strict; use Data::Dumper; my %hours; @hours{0..23} = (0) x 24; my @siteList = qw {site1 site2 site3 site4}; my %struc; map {$struc{$_} = {%hours},} @siteList; print Dumper(%struc);