Estás intentando resolver un problema muy sencillo de la peor (y complicada) manera posible.
No necesitas 'crear' variables. Solo necesitas almacenar información que puedas recuperar y manipular fácilmente.
¿Quieres 'crear' variables en Perl? Ningún problema:
Using perl Syntax Highlighting
$nombre_de_variable = 'animal_n_1';
$$nombre_de_variable = 'mono'; # se crea la variable $animal_n_1 con un valor
print "$animal_n_1\n"; # devuelve 'mono'
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Bien, ahora que sabes cómo se crean las variables por programa, NO LO HAGAS ASÍ. Esta es una forma de programar que se ha desechado desde años, porque crea código muy complicado de entender y mantener. Ningún programador actual de Perl usa esta técnica. De hecho, a partir de Perl v5.12, te saldrán avisos y errores por todos lados. Se llaman 'referencias simbólicas', por si te las encuentras en alguna documentación antigua.
Lo que necesitas es entender cómo funcionan los
array y los
hash en Perl, ya que con ellos tienes resueltos prácticamente todos los problemas de este tipo de almacenamiento.
En un
array los elementos se guardan de forma consecutiva, por lo que puedes recuperarlos de la misma manera o según un índice numérico. Y los
hash también guardan información, pero esta vez indexada por una clave.
Lo tienes explicado aquí:
perldata.
Hablas de crear
animal_n_1 y
animal_n_2. ¿Qué ocurrirá cuando haya veinte animales? ¿Veinte variables?
En el código que has puesto, ¿te has dado cuenta de que las líneas 11 y 14 son iguales? Algo está mal ahí...
Sería interesante saber qué es lo que realmente quieres que el programa haga.