#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; my @array1 = ("ss_dir1", "ss_dir2", "ss_dir3", "ss_di4", "ff_dir1", "ff_dir2", "ff_dir3", "ff_dir4", "ff_dir5", "ff_dir6", "ff_dir7", "ff_dir8"); my @array2 = ("sr2r", "hr2r", "si2r", "sr2o", "hi2r", "hr2o"); my @array3 = ("wns", "tns", "fep"); my %HoH; foreach my $hash (@array1) { foreach my $key (@array2) { $HoH{$hash}{$key} = [ @array3 ]; } } # print Dumper \%HoH; print Dumper $HoH{'ff_dir1'}; __END__ $VAR1 = { 'hr2r' => [ 'wns', 'tns', 'fep' ], 'sr2o' => [ 'wns', 'tns', 'fep' ], 'sr2r' => [ 'wns', 'tns', 'fep' ], 'si2r' => [ 'wns', 'tns', 'fep' ], 'hr2o' => [ 'wns', 'tns', 'fep' ], 'hi2r' => [ 'wns', 'tns', 'fep' ] };