my %h = map{ reverse /(\d+).*#(.+)/ } grep "@array1", @array2; print Dumper \%h; #### Output: $VAR1 = { 'def' => '890', 'abc' => '15', 'ghi' => '78' };