Los errores quieren decir lo siguiente:
Odd number of elements in hash assignment at Urko_Hash_Taula_Kargatu line 9.«En una asignación hash, has intentado pasar un número impar de elementos.»
Los
hashes son pares clave/valor, y lo que has escrito, no es así:
Using perl Syntax Highlighting
my %Moten_Hash_Taula = ('N.IZE-ARR' => @term_array);#creo la tabla hash, no sé si bien, con un sólo elemento de prueba.
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Estás asignando una lista de valores a una sola clave. Por el error, sabemos que @term_array contiene un número par de elementos, ya que, sumados a la clave 'N.IZE-ARR', nos da un número impar, y de ahí, el error. Es más: si se diese la coincidencia de @term_array contuviese un número impar de elementos, Perl no sacaría el error... pero tu programa seguiría estando mal... porque lo que, en realidad quieres poner ahí es
Using perl Syntax Highlighting
my %Moten_Hash_Taula = ('N.IZE-ARR' => \@term_array); # creo la tabla hash
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Tomamos la referencia al
array con el '\' y eso nos devuelve un valor escalar, y eso es lo que almacenamos como valor, asociado a la clave.
Más información en tu propio ordenador en
perldoc perlref,
y en la Web (
traducido).
Más información en tu propio ordenador en
perldoc perldsc,
y en la Web (
traducido).
Use of uninitialized value $Moten_Hash_Taula{"N.IZE-ARR"} in print at Urko_Hash_Taula_Kargatu line 11.«Estás usando un valor no inicializado de $Moten_Hash_Taula{"N.IZE-ARR"}»
Quiere decir que, en realidad, no has guardado nada ahí. Así que print() se encuentra con que quieres sacar algo, de donde no hay nada. Por defecto, print() sacará un cadena de caracteres vacía, que es lo normal en estos casos, pero como también es normal que cuando eso sucede es que hemos metido la pata, nos avisa (porque están activos los warnings).
Cannot open file 'proba.kaf.xml
' at /usr/share/perl5/XML/XPath.pm line 53, <STDIN> line 1.«No puedo abrir el archivo 'proba.kaf.xml
'»
Fíjate (aunque no lo veas): justo detrás de 'xml' hay un carácter de avance de línea. Perl ha intentado buscar un archivo con un carácter de fin de línea, y claro, no lo ha encontrado. Ese carácter viene del usuario, al pulsar la tecla Entrar en su teclado. En la mayor parte de las ocasiones, no nos sirve para nada, así que lo normal es quitarlo. Justo después de la lectura, en la línea 14, pon:
Using perl Syntax Highlighting
chomp $archiv;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
que se encargará de quitar ese (o esos) caracteres.