in reply to Comparing unordered hierarchical arrays

Here is my crack at it:
use strict; use warnings; #my $ha = [[1,2], [5,5,5], [1,2], [3,4]]; #my $hb = [[4,3], [1,2], [2,1], [5,5,5]]; my $ha = [ [1,2], [5,5,5], [1,2], [3,4] ]; my $hb = [ [1,3], [5,5,5], [1,2], [2,4] ]; if (cmpAoA($ha,$hb)) { print "THEY ARE THE SAME\n"; } else { print "THEY ARE THE DIFFERENT\n"; } sub cmpAoA { my @AoA = @_; return 0 if @{$AoA[0]} != @{$AoA[1]}; my %hash; foreach ( @{$AoA[0]} ) { $hash{ stringify($_) }++; } foreach ( @{$AoA[1]} ) { $hash{ stringify($_) }--; } return 0 == grep { $_ } values %hash; } sub stringify { return "[" . join(",", map{qq("$_")} sort { $a <=> $b } @$_ ). "]"; };

-enlil