Ahora no hay que mirar si lo que hemos leído corresponde a una forma u otra de trama o mensaje de ordenes o un estoy vivo, si no que vamos a colocar una batería de 'if' y por cada uno de ellos preguntaremos si la $linea leída corresponde con lo que esperamos. Si es así, entonces hacemos uso de los $campos para sacar la información.
Eso quiere decir que algunas de las cosas que hay en el programa ya no tienen sentido, como lo del 'next unless ...' porque eso servía para cuando sabíamos que sólo ibamos a recibir un cierto tipo de tramas.
El esquema del programa quedaría así:
- Código: Seleccionar todo
* Inicialización
* Bucle mientras esperamos
* Leemos la entrada
* Si la entrada coincide con 'estoy vivo'
* Hacemos ...
* Si la entrada coincide con una trama normal
* Procesar trama
* Si la entrada coincide con una de órdenes
* La almacenamos
* ...
* Fin bucle
Si no entra en el primer 'if' es quizás porque la $linea leída no corresponde a un 'estoy vivo'. Prueba a pintar la $linea antes de pasar por los 'if' para comprobar realmente qué es lo que llega.