O máximo que você pode fazer para encontrar os arquivos perl é usar o próprio perl para julgar. perl -c retorna um código de saída diferente de zero se o arquivo não for um código perl correto, o que é definitivamente verdadeiro para a maioria dos arquivos que não são perl. Infelizmente, ele faz o mesmo quando é alimentado com código perl com defeito e retorna 0 quando o arquivo não é realmente um código perl, mas pode ser analisado sem erro como se fosse. Se você pode viver com esse risco, o núcleo disso pode ser este:
for FILE in * ; do
if perl -c "$FILE" >/dev/null ; then
sed -i -e '1i#!/usr/bin/perl' "$FILE"
fi
done
Observação: uma vez que eu toque os arquivos de qualquer maneira, eu adicionaria a extensão .pl, a menos que haja algum motivo REALMENTE sério para ser cego.