Hola Doddy! espero que ahora no te tomes a mal mis consejos.

Es conveniente que programes con
use strict, ya que tienes muchas variables sin declarar y te puedes liar con el nombre de las variables al programar.
En algunas líneas para realizar la pausa usas
stdin de esta manera:
<STDIN>;
Puedes poner simplemente esto:
<>; y te va a funcionar igual y es mas corto

También tienes algunas lineas de código de más, como por ejemplo estas:
$letrafinal =~ s/{/a/;
$letrafinal =~ s/\|/b/;
$letrafinal =~ s/}/c/;
Que la puedes dejar solo en una con la función
tr.
un saludo.
#!/usr/bin/perl