I'd rather not open and close the file more than once: disk accesses take time (there's the cache, you didn't mention your file's size). Instead, I would first generate subs that count a given character and store them in a hash, referenced by that character.
Then, for each line in the file, loop over the letters and call the sub from the hash. Increment a counter which is itself stored in a hash.
#!/usr/local/bin/perl
use strict;
my @letter = qw/ a b c x y z /;
my %subs;
my %counts;
foreach ( @letter ) {
$subs{$_} = eval "sub { \$_[0] =~ tr/$_// }";
}
while ( <DATA> ) {
foreach my $letter ( @letter ) {
$counts{$letter} += $subs{$letter}->($_);
}
}
print "$_: $counts{$_}\n" foreach @letter;
__DATA__
aedj dfas jijiojsdf dsfwfy jiox jiohjdfax jojojdjj, oiiia oioje asfdc
+oujsdfayx soujfosdxjpoiojfdxjljojaois jojojx jopjpx jojoijx joijiodfx
asdfasdf jjalsdf jlajkldf jojiojsd jiojasj ioj wwdn jojae jojocjoc joi
+jss jiojwx jiojoxuiojy joiyu oiuouyy
--bwana147