#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my @array1 = 'A' .. 'E'; my @array2 = 1 .. 5; my @array3 = 'a' .. 'e'; my (%hash, %tmp); @tmp{@array2} = @array3; @hash{@array1} = map +{ $_ => $tmp{$_} }, @array2; print Dumper \%hash;