Bienvenido a los foros de Perl en Español, jrincon3.
Los operadores binarios "&" y ">>" funcionan exactamente igual que en lenguaje C (y, por lo tanto, en muchos otros).
El operador "&" hace la operación 'AND' lógica a nivel de bits, mientras que el operador ">>" hace el desplazamiento de bits hacia la derecha.
Lo que hace el código es lo siguiente:
system() devuelve el valor de la ejecución de sus argumentos como si fueran ejecutables en el sistema.
Ese valor que retorna lo guarda en la variable $exit_code y es un valor numérico de 2 bytes. El primer byte, el de mayor peso, almacena el 'resultado' de la ejecución (no confundir con la 'salida' de la ejecución). Y en el segundo byte, el de menor peso, almacena el número de la señal del sistema que provocó la muerte prematura del proceso (en caso de muerte prematura, claro).
Para obtener estos dos valores, tenemos que extraer los dos bytes por separado. En el caso del byte de menor peso, nos vale con hacer la operación lógica 'AND' con los 8 bits más bajos puestos. De ahí que hagamos
$exit_code & 255. 255 equivale a un byte con sus 8 bits puestos a 1. El resultado es que en la variable $return_basic nos quedamos con una copia del byte de menor peso de $exit_code.
Para obtener el byte de mayor peso, hacemos otra operación: cogemos el valor de $exit_code y lo desplazamos hacia la derecha 8 veces:
$exit_code >> 8. Y ese valor lo guardamos en $return_app.
Más información sobre los operadores en
perlop. Más información sobre
operaciones binarias en Wikipedia.