my $ha = [[1,2], [5,5,5], [1,2,], [3,4]]; my $hb = [[4,3], [1,2], [2,1,1], [5,5,5]]; # flatten my @ha = map{ @$_ } @$ha; my @hb = map{ @$_ } @$hb; # fail immediately unless equal num elements. if ( @ha != @hb ) { print "Not equal num items!\n"; } else { # now no choice but to sort or do detail compare if ( (join ' ', sort @ha) eq (join ' ', sort @hb) ) { print "Equal\n" } else { print "Not equal\n" } }