• Publicidad

Obtener datos desde una SimpleList

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Obtener datos desde una SimpleList

Notapor 60N2410 » 2012-03-27 12:30 @562

¡Hola nuevamente!

Mi consulta:

Tengo una SimpleList cargada con datos los cuales quiero obtenerlos e imprimirlos en pantalla.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $lista=Gtk2::SimpleList->new( Lista => 'text' );
  2. # Le agrego datos...
  3. my @resultado; #arreglo con datos
  4. foreach  my $entrada (@resultado) {
  5.     push @{$lista->{data}}, $entrada;
  6. }
  7.  
  8. # Luego en otra subrutina quiero obtener los datos e imprimirlos pero no he podido, siempre me imprime una dirección, he tratado de utilizar @{$lista->{data}} pero no logro desreferenciar nada
  9.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Desde ya, muchas gracias.
60N2410
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2011-12-08 15:16 @678

Publicidad

Re: Obtener datos desde una SimpleList

Notapor explorer » 2012-03-27 12:48 @575

Pero si en la línea 3 declaras la variable @resultado, estará vacía.
Cuando llegues a la línea 4, ni siquiera entrará en el bucle, porque @resultado estará vacía.
Ningún valor se almacenará en $lista->{data}.

Prueba:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Data::Dumper;
  2. print Dumper($lista);
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener datos desde una SimpleList

Notapor 60N2410 » 2012-03-27 13:09 @589

¡aajjj! Perdón, es un pseudo código.

El arreglo tiene datos, la lista también (la muestro en pantalla).

Quiero obtener los datos de la lista en otra subrutina, o sea, tengo una lista con datos y se los quiero sacar de a uno e imprimirlos o ponerlos en un textbuffer.

Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub vista_texto{
  2.         my $lista = shift;
  3.         my $data=$lista->{data};
  4.         my @arr=@{$data};
  5.         foreach my $tex (@arr){
  6.                 print "$tex\n";
  7.         }
  8.  
  9. # o también
  10.  
  11.         my $textbuffer= Gtk2::TextBuffer->new(undef);
  12.         my $text_view = Gtk2::TextView->new;
  13.         foreach my $texto (@arr){
  14.                 $textbuffer->insert_at_cursor($texto);
  15.         }
  16. # y luego mostrar el texto en pantalla...
  17. }
  18.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora sí el código es más prolijo.

Pero no logro imprimir los datos, me imprime cosas raras.
Perdón la molestia.
60N2410
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2011-12-08 15:16 @678

Re: Obtener datos desde una SimpleList

Notapor explorer » 2012-03-27 17:04 @753

Pero... ¿qué cosas rara te imprime? Queremos verlas...

Otra idea... cuando trabajamos con estructuras complejas, una buena idea es la pedir ayuda a Data::Dumper:

use Data::Dumper;
print Dumper($data);

Si $data contiene una referencia a un array, lo podrás ver desplegado en pantalla. Si no, verás su verdadero contenido.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener datos desde una SimpleList

Notapor 60N2410 » 2012-03-28 08:04 @378

La salida imprimiendo con el foreach() es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ARRAY(0x996b610)ARRAY(0x8fc3908)
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Y la salida con Dumper:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$VAR1 = [
          [
            'nombre1'
          ],
          [
            'nombre2'
          ],
          [
            'nombre3'
          ],
          [
            'nombre4'
          ],
          [
            'nombre5'
          ],
          [
            'nombre6'
          ]
        ];
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Yo solo quiero imprimir en pantalla:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
nombre1
nombre2
nombre3
nombre4
nombre5
nombre6
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

¡Gracias!
60N2410
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2011-12-08 15:16 @678

Re: Obtener datos desde una SimpleList

Notapor explorer » 2012-03-28 11:06 @504

El Data::Dumper ya nos da una pista: se trata de una referencia a un array que, en cada uno de sus elementos, es una referencia a otro array, que a su vez cada uno contiene un solo elemento: una cadena de texto.

Entonces, tenemos que, si $data es la primera referencia, con @{ $data } la desreferenciamos, y obtenemos los elementos del array. Ahora solo queda desreferenciar el array de cada elemento:


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for my $item ( @{ $data } ) {   # $data es un ref. a un array. Recorremos todos los elementos.
  2.  
  3.     print $item->[0], "\n";     # $item es una ref. a un array. La desreferenciamos con '->', accedemos al array,
  4.                                 # y sacamos su primer elemento ([0]). Es la forma corta de ${$item}[0]
  5. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Más información en perldoc perlref (traducido).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener datos desde una SimpleList

Notapor 60N2410 » 2012-03-28 12:07 @546

¡Muchísimas gracias!

Ahora entendí bien cómo usar el Dumper, para estos casos.

¡Saludos!
60N2410
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2011-12-08 15:16 @678

Re: Obtener datos desde una SimpleList

Notapor explorer » 2012-03-28 15:31 @688

El Data::Dumper::Simple es incluso mejor, pero no viene de base con Perl, así que hay que instalarlo a mayores.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron