Try this:
Win8 Strawberry 5.30.3.1 (64) Sat 09/26/2020 0:05:59
C:\@Work\Perl\monks
>perl
use strict;
use warnings;
my $kards;
my $bad = 'AKQJT98765432KKKK';
my $card = 'K';
eval "\$kards = \$bad =~ tr/$card//";
print "1: Num of '$card' in $bad is == $kards \n";
my $kings = $bad =~ tr/K//;
print "2: Num of '$card' in $bad is == $kings \n";
__END__
1: Num of 'K' in AKQJT98765432KKKK is == 5
2: Num of 'K' in AKQJT98765432KKKK is == 5
Note that
\$kards \$bad in the
eval string are
escaped
(update: and $card is not). Why?
Update: Just read your update to the OP and I
think you pretty much have the idea I was trying to get across.
However, now try running the OP update code with strict and
warnings enabled.
Give a man a fish: <%-{-{-{-<