print "Here is what happens with assignment\n"; my @array1 = ( {foo=>'foo1', bar=>'bar1' } , {foo=>'foo2', bar=>'bar2' } ); my @array2 = (); @array2 = @array1; print "\@array1: @array1\n"; print "\@array1: @array2\n"; $array1[0]{foo} = 'new'; print "\$array1[0]{foo}: $array1[0]{foo}\n"; print "\$array2[0]{foo}: $array2[0]{foo}\n"; print "Here is how to clone \@array1\n"; my @array1 = ( {foo=>'foo1', bar=>'bar1' } , {foo=>'foo2', bar=>'bar2' } ); my @array2 = (); for (@array1) { my %new_hash = %$_; push @array2, \%new_hash; } print "\@array1: @array1\n"; print "\@array1: @array2\n"; $array1[0]{foo} = 'new'; print "\$array1[0]{foo}: $array1[0]{foo}\n"; print "\$array2[0]{foo}: $array2[0]{foo}\n";