use strict; use warnings; use Data::Dumper; my $arrays = {"a1" => [0, 1,2,3,4,5,6,7,8,9], "a2" => [1,2,3,4,6,8, 10, 12,14], "a3" => [1,2,3,5,7,9, 11,13,15]}; my $result = {}; foreach my $array_name (keys %$arrays) { map {$result->{$_}->{$array_name} = 1} @{$arrays->{$array_name}} } print Dumper($result);