Si saben como hacerlo se los agradececría ya que probé de todas las formas que se me ocurrían pero no pude






Gracias
MonoSwim
| |||
Claro que si se puede hacer un array de arrays, pero en realidad sería un array de referencias de arrays, deja te pongo un código para que veas como funciona:
Código:
SALUDOS #!/usr/bin/perl -w use strict; #EJEMPLO DE ARRAY DE REFERENCIAS #:: iniciamos un array con colores my @colores = ('rojo', 'verde', 'cafe', 'morado'); #:: iniciamos un array con dias de la semana my @semana = ('Lunes', 'Martes', 'Miércoles', 'Jueves'); #:: hacemos nuestro array con las referencias my @array_de_arrays = (\@colores, \@semana); #AHORA PARA DESPLEGAR UN ELEMENTO HACEMOS ESTO print "$array_de_arrays[0][0]\n"; #Despliega el color rojo print "$array_de_arrays[0][3]\n"; #Despliega el color morado print "$array_de_arrays[1][0]\n"; #Despliega el día Lunes print "$array_de_arrays[1][2]\n"; #Despliega el día Miércoles exit(1); #finalizamos exitosamente |
| |||
Hola monoswim, Como ya lo mencionó nuestro amigo kidd, la solución en Perl está en usar referencias. Resulta que en Perl no existen las matrices multidimensionales como tal, al menos como las conocemos en C, de modo que el mecanismo para implementar este tipo de datos (en un modo muy típico de Perl) es mediante un truco que, como efecto colateral, permite usar la sintaxis que mencionas, es decir: $mi_variable[$indice1][$indice2]. En realidad, aunque suene un poco `sucio' el hecho de llamarlo truco, este es uno de esos detalles que hace el lenguaje tan bonito y rico. De hecho, gracias a que las matrices multidimensionales en Perl son en efecto referencias, no existe la limitación (existente en C por ejemplo) inherente de que cada matriz de más de una dimensión debe tener un número fijo de filas, columnas y demás (en el caso de matrices de más de dos dimensiones). Es decir, puedes tener una matriz de dos dimensiones por ejemplo, en la que cada fila puede tener un número de columnas diferente, y todo esto mediante construcciones nativas del lenguaje. En C habría que crear nuestros propios tipos de datos y habría que encargarse manualmente de la manipulación de memoria. Bueno, en fin, como complemento al programa que ya nos compartió kidd, aquí te presento otro programa que usa referencias anónimas (denotadas por corchetes cuadrados en Perl) para definir una matriz bidimensional:
Código:
Este programa, como puede esperarse, produce como salida:#! /usr/bin/perl -w use strict; use vars qw(@matriz); @matriz = ([1, 2, 3], ['a', 'b', 'c'], ['hola', 'mi', 'gente']); foreach my $i (0 .. 2) { foreach my $j (0 ..2) { print $matriz[$i][$j] . " "; } print "\n"; }
Código:
Puedes leer más sobre el asunto de las referencias en la documentación de Perl.1 2 3 a b c hola mi gente $ perldoc perlref http://perldoc.com/perl5.8.0/pod/perlref.html Finalmente, quisiera remarcar un detalle sobre el código que compartió gentilmente kidd: un valor de `1' como argumento de la función exit() generalmente quiere decir que el programa debe finalizar a causa de un error, y en efecto muchos sistemas operativos y aplicaciones interpretan de ese modo cualquier valor diferente a cero, el cual es reconocido universalmente como valor de éxito. Probablemente fue el cero el número que quiso escribir nuestro amigo. Un cordial saludo. |
| ||||
Muy Bueno... Vendría a ser como el & en el lenguaje C, pasando los valores por referencia...La verdad es que Perl cada ves me gusta más, tiene muy pocas limitaciones, hasta ahora pude hacer todo lo que me propuse, hasta ahora la única limitación es mi nivel de conocimientos sobre el lenguaje, pero de a poco voy aprendiendo. Gracias Kidd y Leonardop por sus respuestas, ha y por cierto, muy buena la página de perldoc...me al estoy leyendo toda... MonoSwim |