http://qs321.pair.com?node_id=461019


in reply to string comparison

There's no restraints on these techniques. The words needn't be unique in the string nor do they have to be of equal length.

Solution 1: Cancel out common elements.

use List::Util qw/ first /; my %count; $count{$_}++ for split /,/, $str1; $count{$_}-- for split /,/, $str2; my $different = defined first { $_ } values %count;
The last line says that they're different if there is any value that is non-zero, i.e. any element not cancelled out.

Solution 2: Use &Test::More::eq_array

require Test::More; my $equal = Test::More::eq_array( [ split ',', $str1 ], [ split ',', $str2 ], );

ihb

See perltoc if you don't know which perldoc to read!