Forse c'e` anche un metodo piu` compatto, ma io spezzerei la stringa, e analizzerei i vari pezzi:
codice:
print OUT "The words founded in $filein are: \n";
while (<FILE> ) {
  my @parole = split(/\s*/);
  foreach $parola in @parole { 
    if($parola =~ /^[0-9a-c]{16}$/) {
      print OUT, "$parola  ";
    }
  }
  print OUT, "\n"; # opzionale
}
Nota: non ho testato, per cui potrebbero esserci errori di sintassi.