my @a = ( 1, 2, 3 ); my @b = ( 2, 3, 1 ); my @c = ( 1, 2, 4 ); print "(@a) and (@b) are equal sets.\n" if identical( \@a, \@b ); print "(@a) and (@c) are equal sets.\n" if identical( \@a, \@c ); print "(@b) and (@c) are equal sets.\n" if identical( \@b, \@c ); sub identical { my( $left, $right ) = @_; return 0 if scalar @$left != scalar @$right; my %hash; @hash{ @$left, @$right } = (); return scalar keys %hash == scalar @$left; }