>>10 2行目はもっと簡潔に書ける

 my %h = map{$_ => 1} map{lc} grep{/[a-z]/i} split '';
 ↓
 my %h = map{lc $_ => 1} /([A-Za-z])/g;


結局、これでよい筈

for (<DATA>) {
 my %h = map{lc $_ => 1} /([A-Za-z])/g;
 push @a, $_ if 26 == keys %h;
}
@s = sort{length $a <=> length $b} @a;
print $s[0];
__DATA__
… (ry