Poco a poco, tenemos que ir explicando todo el programa
return $array[ rand @array ];@array es una variable de
array, así que guarda una serie de elementos.
rand() requiere un argumento escalar. Entonces, lo que hace Perl es ejecutar el
array en contexto escalar, así que lo que obtenemos es el número de elementos que hay dentro de ese
array.
rand(), con un argumento, devuelve un número aleatorio entre 0 (incluido) y el valor del argumento (excluido).
El valor aleatorio se transforma en un índice para extraer un elemento dentro del propio @array, y eso es lo que devuelve return().
En resumen: return() nos termina la subrutina actual, devolviendo un elemento de
@array elegido aleatoriamente.
return int rand length $string;length() nos devuelve el número de caracteres de $string.
rand() nos devuelve un número aleatorio entre 0 (incluido) y el valor del argumento (excluido).
int() redondea el número aleatorio a un número entero, y es este el valor que devuelve.
En resumen: return() nos termina la subrutina actual, devolviendo un número aleatorio entre 0 y la longitud de $string, menos 1 (o sea, que podemos usar ese número para sacar un carácter del interior de $string).