#!/usr/bin/perl
use 5.026001;
use warnings;
use Test::More;
sub same {
my ($s1, $s2) = @_;
my %l1; $l1{$_}++ for unpack "(A)*" => $s1;
my %l2; $l2{$_}++ for unpack "(A)*" => $s2;
is_deeply (\%l1, \%l2, "'$s1' ~~~ '$s2'");
} # same
sub diff {
my ($s1, $s2) = @_;
my %l1; $l1{$_}++ for unpack "(A)*" => $s1;
my %l2; $l2{$_}++ for unpack "(A)*" => $s2;
isnt ((join "" => map { $_, $l1{$_} } sort keys %l1),
(join "" => map { $_, $l2{$_} } sort keys %l2),
"'$s1' ~!~ '$s2'");
} # diff
same ("ABBABAA", "BAABABA");
diff ("ABBABAA", "BAABBBA");
diff ("ABBABAA", "ABBABaA");
diff ("ABBABAA", "BAABBAA ");
diff ("ABBABAA", "BAABABA ");
diff ("ABBABAA", "BAABABAA");
done_testing;
####
$ test.pl
ok 1 - 'ABBABAA' ~~~ 'BAABABA'
ok 2 - 'ABBABAA' ~!~ 'BAABBBA'
ok 3 - 'ABBABAA' ~!~ 'ABBABaA'
ok 4 - 'ABBABAA' ~!~ 'BAABBAA '
ok 5 - 'ABBABAA' ~!~ 'BAABABA '
ok 6 - 'ABBABAA' ~!~ 'BAABABAA'
1..6
####
use 5.026001;
use warnings;
use Test2::V0;
sub same {
my ($s1, $s2) = @_;
my %l1; $l1{$_}++ for unpack "(A)*" => $s1;
my %l2; $l2{$_}++ for unpack "(A)*" => $s2;
is (\%l1, \%l2, "'$s1' ~~~ '$s2'");
} # same
sub diff {
my ($s1, $s2) = @_;
my %l1; $l1{$_}++ for unpack "(A)*" => $s1;
my %l2; $l2{$_}++ for unpack "(A)*" => $s2;
isnt (\%l1, \%l2, "'$s1' ~!~ '$s2'"); # <- this line is now much simpler
} # diff
same ("ABBABAA", "BAABABA");
diff ("ABBABAA", "BAABBBA");
diff ("ABBABAA", "ABBABaA");
diff ("ABBABAA", "BAABBAA ");
diff ("ABBABAA", "BAABABA ");
diff ("ABBABAA", "BAABABAA");
done_testing;