#! /usr/bin/perl use strict; use warnings; use Data::Dumper; my @array = ({key1 => 'value1',               key2 => 'value2'}); my @array2 = ({key3 => 'value3',               key4 => 'value4'},              {key5 => 'value5'}); my @new_array = @{join_arrays(\@array,\@array2)}; print Dumper(\@new_array); sub join_arrays{  my ($ar1ref,$ar2ref) = @_;  my @array = ();  if(scalar(@{$ar2ref}) > scalar(@{$ar1ref})){    my $tempref = $ar2ref;    $ar2ref = $ar1ref;    $ar1ref = $tempref;  }  for(0..(scalar(@{$ar1ref}) - 1)){    $array[$_] = ${$ar1ref}[$_];    %{$array[$_]} = (%{$array[$_]},%{${$ar2ref}[$_]}) if(${$ar2ref}[$_]);  }  return \@array; }