Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Básico » Consulta de XML::Simple  RESUELTO Responder al tema
Nuevo tema


Página 1 de 2  [ 18 mensajes ]  Ir a página 1, 2  Siguiente
 
Nota 2011-12-13 14:47 @657

Perlero Nuevo
Registrado: 2011-08-30 19:28 @853
Mensajes: 47
Consulta de XML::Simple  RESUELTO
Estimados,
Estoy teniendo problemas con un parser.

Tengo el siguiente XML:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <gpx>
  3.   <wpt lat="" lon="">
  4.     <ele>0</ele>
  5.     <time>1-01-01T00:00:0.0Z</time>
  6.     <geoidheight>0</geoidheight>
  7.     <name> [00:00:00:00:00:00]</name>
  8.     <cmt>0</cmt>
  9.     <desc>
  10. [00:00:00:00:00:00]
  11. RSSI: -46 dB
  12. Quality: 100%
  13. Channel 1
  14. Speed (kph): 0
  15. 1-01-01T00:00:0.0Z</desc>
  16.     <fix></fix>
  17.     <sat>0</sat>
  18.     <hdop>0</hdop>
  19.     <vdop>0</vdop>
  20.     <pdop>0</pdop>
  21.     <extensions>
  22.       <MAC>00:00:00:00:00:00</MAC>
  23.       <SSID>PRUEBA</SSID>
  24.       <RSSI>-46</RSSI>
  25.       <ChannelID>1</ChannelID>
  26.       <privacy>RSNA-CCMP</privacy>
  27.       <signalQuality>100</signalQuality>
  28.       <networkType>Infrastructure</networkType>
  29.       <rates>1/2/5,5/6/9/11/12/18/24/36/48/54</rates>
  30.     </extensions>
  31.   </wpt>
  32.  </gpx>
  33.  


Quiero obtener como resultado:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
- SSID
- MAC
- RSSI
- ChannelID
- networkType


Mi script es el siguiente:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use XML::Simple;
  6. use Data::Dumper;
  7.  
  8. my $info = XMLin("kk.xml", KeyAttr => 1);
  9. print Dumper($info);
  10.  
  11. for my $ap ( @{$info->{extensions}} ) {
  12.         print "$ap->{SSID} => $ap->{MAC} ($ap->{RSSI})\n";
  13. }
  14.  


No me funciona :S


Nota 2011-12-13 17:42 @779
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
El acceso no era correcto. 'extensions' está dentro de 'wpt'. Y el bucle recorre un hash, no un array.
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use XML::Simple;
  6. use Data::Dumper;
  7.  
  8. my $info = XMLin("code_28964.xml", KeyAttr => 1);
  9. print Dumper($info);
  10.  
  11. my $extensions_ref = $info->{wpt}->{extensions};
  12.  
  13. for my $ap ( keys %{$extensions_ref} ) {
  14.     print "$ap => $extensions_ref->{$ap}\n";
  15. }
sale:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
networkType => Infrastructure
rates => 1/2/5,5/6/9/11/12/18/24/36/48/54
SSID => PRUEBA
MAC => 00:00:00:00:00:00
signalQuality => 100
RSSI => -46
ChannelID => 1
privacy => RSNA-CCMP

_________________
JF^D Perl programming


Nota 2011-12-13 18:16 @803

Perlero Nuevo
Registrado: 2011-08-30 19:28 @853
Mensajes: 47
Re: Consulta de XML::Simple
En mi caso sigue mostrándome todos los datos:

Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
$VAR1 = {
          'wpt' => [
                   {
                     'vdop' => '0',
                     'ele' => '0',
                     'fix' => {},
                     'time' => '1-01-01T00:00:0.0Z',
                     'lat' => '',
                     'name' => ' [00:00:00:00:00]',
                     'hdop' => '0',
                     'cmt' => '0',
                     'geoidheight' => '0',
                     'extensions' => {
                                     'networkType' => 'Infrastructure',
                                     'rates' => '1/2/5,5/6/9/11/12/18/24/36/48/54',
                                     'SSID' => {PRUEBA},
                                     'MAC' => '00:00:00:00:00',
                                     'signalQuality' => '100',
                                     'RSSI' => '-46',
                                     'ChannelID' => '1',
                                     'privacy' => 'RSNA-CCMP'
                                   },
                     'pdop' => '0',
                     'desc' => '
 


Por otro lado, ¿se puede hacer print() por separado? Ya que en un futuro voy a tratar de enviar esa información a un XLS...


Nota 2011-12-13 19:10 @840
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
Sí, claro que se puede...

_________________
JF^D Perl programming


Nota 2011-12-13 19:13 @842
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
Hummm... interesante... tu volcado de datos es diferente del mío:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
$VAR1 = {
          'wpt' => {
                   'vdop' => '0',
                   'ele' => '0',
                   'fix' => {},
                   'time' => '1-01-01T00:00:0.0Z',
                   'lat' => '',
                   'name' => ' [00:00:00:00:00:00]',
                   'hdop' => '0',
                   'cmt' => '0',
                   'geoidheight' => '0',
                   'extensions' => {
                                   'networkType' => 'Infrastructure',
                                   'rates' => '1/2/5,5/6/9/11/12/18/24/36/48/54',
                                   'SSID' => 'PRUEBA',
                                   'MAC' => '00:00:00:00:00:00',
                                   'signalQuality' => '100',
                                   'RSSI' => '-46',
                                   'ChannelID' => '1',
                                   'privacy' => 'RSNA-CCMP'
                                 },
                   'pdop' => '0',
                   'desc' => '
[00:00:00:00:00:00]
RSSI: -46 dB
Quality: 100%
Channel 1
Speed (kph): 0
1-01-01T00:00:0.0Z',
                   'sat' => '0',
                   'lon' => ''
                 }
        };

Eso es porque no coinciden las versiones de XML::Simple (supongo).
En mi caso yo estoy con la v2.18:
Syntax: [ Download ] [ Hide ]
Using bash Syntax Highlighting
  1. explorer@casa:~/Documentos/Desarrollo> perl -MXML::Simple -E 'say $XML::Simple::VERSION'
  2. 2.18

_________________
JF^D Perl programming


Nota 2011-12-13 19:14 @843
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
Para tu organización de datos, sería suficiente con modificar esta línea:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. my $extensions_ref = $info->{wpt}->[0]->{extensions};

_________________
JF^D Perl programming


Nota 2011-12-13 19:20 @847

Perlero Nuevo
Registrado: 2011-08-30 19:28 @853
Mensajes: 47
Re: Consulta de XML::Simple
Hice el cambio y me da el mismo resultado :S

Mi versión es la misma que la tuya, estoy corriendo Perl en Windows Seven.

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. C:\>perl -MXML::Simple -E "say $XML::Simple::VERSION"
  2. 2.18
  3.  


Es como si hace un DUMP de todo, sin realizar el "parseo".


Nota 2011-12-13 20:21 @889
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
La interpretación (parseo) es correcta.

Dumper() muestra lo que ha leído XML::Simple.

La diferencia entre tu salida y la mía es que en la tuya, los contenidos de 'wpt' están en un array anónimo (el corchete '[' que aparece en el volcado), y por eso puse ->[0] en la solución para tu salida.

Prueba con ese cambio, debería salir...

_________________
JF^D Perl programming


Nota 2011-12-14 05:16 @261

Perlero Nuevo
Registrado: 2011-08-30 19:28 @853
Mensajes: 47
Re: Consulta de XML::Simple
xml:
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <gpx>
  3.   <wpt lat="" lon="">
  4.     <ele>0</ele>
  5.     <time>1-01-01T00:00:0.0Z</time>
  6.     <geoidheight>0</geoidheight>
  7.     <name>Mer2 [00:12:0E:03:02:01]</name>
  8.     <cmt>0</cmt>
  9.     <desc>Mer2
  10. [00:12:0E:03:02:01]
  11. RSSI: -81 dB
  12. Quality: 65%
  13. Channel 11
  14. Speed (kph): 0
  15. 1-01-01T00:00:0.0Z</desc>
  16.     <fix></fix>
  17.     <sat>0</sat>
  18.     <hdop>0</hdop>
  19.     <vdop>0</vdop>
  20.     <pdop>0</pdop>
  21.     <extensions>
  22.       <MAC>00:12:0E:03:02:01</MAC>
  23.       <SSID>Mer2</SSID>
  24.       <RSSI>-81</RSSI>
  25.       <ChannelID>11</ChannelID>
  26.       <privacy>None</privacy>
  27.       <signalQuality>65</signalQuality>
  28.       <networkType>Infrastructure</networkType>
  29.       <rates>1/2/5,5/6/9/11/12/18/24/36/48/54</rates>
  30.     </extensions>
  31.   </wpt>
  32.   <wpt lat="" lon="">
  33.     <ele>0</ele>
  34.     <time>1-01-01T00:00:0.0Z</time>
  35.     <geoidheight>0</geoidheight>
  36.     <name>chapo1[1C:BD:00:00:00:00]</name>
  37.     <cmt>0</cmt>
  38.     <desc>chapo1
  39. [1C:BD:00:00:00:00]
  40. RSSI: -87 dB
  41. Quality: 21%
  42. Channel 11
  43. Speed (kph): 0
  44. 1-01-01T00:00:0.0Z</desc>
  45.     <fix></fix>
  46.     <sat>0</sat>
  47.     <hdop>0</hdop>
  48.     <vdop>0</vdop>
  49.     <pdop>0</pdop>
  50.     <extensions>
  51.       <MAC>1C:BD:00:00:00:00</MAC>
  52.       <SSID>chapo1</SSID>
  53.       <RSSI>-87</RSSI>
  54.       <ChannelID>11</ChannelID>
  55.       <privacy>RSNA-CCMP</privacy>
  56.       <signalQuality>21</signalQuality>
  57.       <networkType>Infrastructure</networkType>
  58.       <rates>1/2/5,5/6/9/11/12/15/18/24/30/36/45/48/54/60/90/120/135/150</rates>
  59.     </extensions>
  60.   </wpt>
  61.   <wpt lat="" lon="">
  62.     <ele>0</ele>
  63.     <time>1-01-01T00:00:0.0Z</time>
  64.     <geoidheight>0</geoidheight>
  65.     <name>Mer1 [00:12:00:00:00:00]</name>
  66.     <cmt>0</cmt>
  67.     <desc>Mer1
  68. [00:12:00:00:00:00]
  69. RSSI: -61 dB
  70. Quality: 65%
  71. Channel 11
  72. Speed (kph): 0
  73. 1-01-01T00:00:0.0Z</desc>
  74.     <fix></fix>
  75.     <sat>0</sat>
  76.     <hdop>0</hdop>
  77.     <vdop>0</vdop>
  78.     <pdop>0</pdop>
  79.     <extensions>
  80.       <MAC>00:12:00:00:00:00</MAC>
  81.       <SSID>Mer1</SSID>
  82.       <RSSI>-61</RSSI>
  83.       <ChannelID>11</ChannelID>
  84.       <privacy>None</privacy>
  85.       <signalQuality>65</signalQuality>
  86.       <networkType>Infrastructure</networkType>
  87.       <rates>1/2/5,5/6/9/11/12/18/24/36/48/54</rates>
  88.     </extensions>
  89.   </wpt>
  90. </gpx>
  91.  


Script:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use XML::Simple;
  6. use Data::Dumper;
  7.  
  8. my $info = XMLin("1.xml", KeyAttr => 1);
  9. print Dumper($info);
  10.  
  11. my $extensions_ref = $info->{'wpt'}[0]->{'extensions'};
  12.  
  13. for my $ap ( keys %{$extensions_ref} ) {
  14.     print "$ap => $extensions_ref->{$ap}\n";
  15. }
  16.  


output:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. $VAR1 = {
  2.           'wpt' => [
  3.                    {
  4.                      'vdop' => '0',
  5.                      'ele' => '0',
  6.                      'fix' => {},
  7.                      'time' => '1-01-01T00:00:0.0Z',
  8.                      'lat' => '',
  9.                      'name' => 'Mer2 [00:12:0E:03:02:01]',
  10.                      'hdop' => '0',
  11.                      'cmt' => '0',
  12.                      'geoidheight' => '0',
  13.                      'extensions' => {
  14.                                      'networkType' => 'Infrastructure',
  15.                                      'rates' => '1/2/5,5/6/9/11/12/18/24/36/48/54',
  16.                                      'SSID' => 'Mer2',
  17.                                      'MAC' => '00:12:0E:03:02:01',
  18.                                      'signalQuality' => '65',
  19.                                      'RSSI' => '-81',
  20.                                      'ChannelID' => '11',
  21.                                      'privacy' => 'None'
  22.                                    },
  23.                      'pdop' => '0',
  24.                      'desc' => 'Mer2
  25. [00:12:0E:03:02:01]
  26. RSSI: -81 dB
  27. Quality: 65%
  28. Channel 11
  29. Speed (kph): 0
  30. 1-01-01T00:00:0.0Z',
  31.                      'sat' => '0',
  32.                      'lon' => ''
  33.                    },
  34.                    {
  35.                      'vdop' => '0',
  36.                      'ele' => '0',
  37.                      'fix' => {},
  38.                      'time' => '1-01-01T00:00:0.0Z',
  39.                      'lat' => '',
  40.                      'name' => 'chapo1[1C:BD:00:00:00:00]',
  41.                      'hdop' => '0',
  42.                      'cmt' => '0',
  43.                      'geoidheight' => '0',
  44.                      'extensions' => {
  45.                                      'networkType' => 'Infrastructure',
  46.                                      'rates' => '1/2/5,5/6/9/11/12/15/18/24/30/36/45/48/54/60/90/120/135/150',
  47.                                      'SSID' => 'chapo1',
  48.                                      'MAC' => '1C:BD:00:00:00:00',
  49.                                      'signalQuality' => '21',
  50.                                      'RSSI' => '-87',
  51.                                      'ChannelID' => '11',
  52.                                      'privacy' => 'RSNA-CCMP'
  53.                                    },
  54.                      'pdop' => '0',
  55.                      'desc' => 'chapo1
  56. [1C:BD:00:00:00:00]
  57. RSSI: -87 dB
  58. Quality: 21%
  59. Channel 11
  60. Speed (kph): 0
  61. 1-01-01T00:00:0.0Z',
  62.                      'sat' => '0',
  63.                      'lon' => ''
  64.                    },
  65.                    {
  66.                      'vdop' => '0',
  67.                      'ele' => '0',
  68.                      'fix' => {},
  69.                      'time' => '1-01-01T00:00:0.0Z',
  70.                      'lat' => '',
  71.                      'name' => 'Mer1 [00:12:00:00:00:00]',
  72.                      'hdop' => '0',
  73.                      'cmt' => '0',
  74.                      'geoidheight' => '0',
  75.                      'extensions' => {
  76.                                      'networkType' => 'Infrastructure',
  77.                                      'rates' => '1/2/5,5/6/9/11/12/18/24/36/48/54',
  78.                                      'SSID' => 'Mer1',
  79.                                      'MAC' => '00:12:00:00:00:00',
  80.                                      'signalQuality' => '65',
  81.                                      'RSSI' => '-61',
  82.                                      'ChannelID' => '11',
  83.                                      'privacy' => 'None'
  84.                                    },
  85.                      'pdop' => '0',
  86.                      'desc' => 'Mer1
  87. [00:12:00:00:00:00]
  88. RSSI: -61 dB
  89. Quality: 65%
  90. Channel 11
  91. Speed (kph): 0
  92. 1-01-01T00:00:0.0Z',
  93.                      'sat' => '0',
  94.                      'lon' => ''
  95.                    }
  96.                  ]
  97.         };
  98. networkType => Infrastructure
  99. rates => 1/2/5,5/6/9/11/12/18/24/36/48/54
  100. SSID => Mer2
  101. MAC => 00:12:0E:03:02:01
  102. signalQuality => 65
  103. RSSI => -81
  104. ChannelID => 11


Nota 2011-12-14 07:09 @339
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
¡Ah, claro!

Como no habías puesto el XML entero, no sabía el porqué XML::Simple había convertido en array los contenidos de 'wpt'. Viéndolo completo, nos damos cuenta de que tiene varias entradas.

Bueno, pues entonces sí, haciendo variar el índice dentro de los corchetes, de la línea 11, accedes a todos los contenidos.

Ya solo te queda quitar o comentar la línea 9 para que no te haga el volcado de datos, y listo.

P.D. Estamos en el foro Intermedio.

_________________
JF^D Perl programming


Nota 2011-12-14 07:51 @368

Perlero Nuevo
Registrado: 2011-08-30 19:28 @853
Mensajes: 47
Re: Consulta de XML::Simple
Perfecto. Perdón, pero ¿cómo tendría que hacer para listar todos los "APs" y hacer los print() de cada valor por separado?


Nota 2011-12-14 08:23 @391
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
Aquí hay dos soluciones, a falta de una:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use XML::Simple;
  6.  
  7. # Leemos el xml
  8. # KeyAttr => 1 : para evitar que convierta la entrada <name> en clave principal
  9. # ForceArray => ['wpt'] : indicamos que esa marca debe ser *siempre* un array
  10. #my $info = XMLin("code_28980.txt", KeyAttr => 1, ForceArray => ['wpt']);
  11. my $info = XMLin("code_28964.xml", KeyAttr => 1, ForceArray => ['wpt']);
  12.  
  13. #use Data::Dumper;
  14. #print Dumper $info;
  15.  
  16. # Una forma
  17. # Cuántos wpt tenemos
  18. my $n_wpt = scalar @{ $info->{wpt} } - 1;
  19.  
  20. for my $i (0 .. $n_wpt) {
  21.  
  22.     my $extensions_ref = $info->{wpt}->[$i]->{extensions};
  23.  
  24.     for my $ap ( keys %{$extensions_ref} ) {
  25.         print "$ap => $extensions_ref->{$ap}\n";
  26.     }
  27.  
  28.     print '=' x 50, "\n";
  29. }
  30.  
  31. print '-' x 70, "\n";
  32.  
  33. # Otra forma
  34. # Accediendo a los valores wpt directamente
  35. for my $wpt_ref ( @{ $info->{wpt} } ) {
  36.     my $extensions_ref = $wpt_ref->{extensions};
  37.  
  38.     for my $ap ( keys %{$extensions_ref} ) {
  39.         print "$ap => $extensions_ref->{$ap}\n";
  40.     }
  41.  
  42.     print '=' x 50, "\n";
  43. }

_________________
JF^D Perl programming


Nota 2011-12-14 08:49 @409

Perlero Nuevo
Registrado: 2011-08-30 19:28 @853
Mensajes: 47
Re: Consulta de XML::Simple
¡Muchas Gracias! ¡Funciona perfecto!

Dejo el script completo:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. BEGIN {
  6.  
  7.     eval "use XML::Simple";
  8.  
  9.     if ( $@ ) {
  10.  
  11.         warn  "Error al cargar el modulo: XML::Simple\n"
  12.  
  13.         . "instalar modulo:\n"      
  14.  
  15.         . "\t\tcpan\n"
  16.  
  17.         . "\t\tcpan> install XML::Simple\n";
  18.  
  19. exit ();
  20.  
  21.  }
  22.  
  23.  }
  24.  
  25. use XML::Simple;
  26.  
  27. if ( @ARGV != 1 ) {
  28.     die "\nUso: $0 <reporte.gpx>\n";
  29.  
  30. }
  31.  
  32. my $file = $ARGV[0];
  33. chomp $file;
  34.  
  35. # Leemos el xml
  36. # KeyAttr => 1 : para evitar que convierta la entrada <name> en clave principal
  37. # ForceArray => ['wpt'] : indicamos que esa marca debe ser *siempre* un array
  38. my $info = XMLin("$file", KeyAttr => 1, ForceArray => ['wpt']);
  39.  
  40. # Una forma
  41. # Cuántos wpt tenemos
  42. my $n_wpt = scalar @{ $info->{wpt} } - 1;
  43.  
  44. for my $i (0 .. $n_wpt) {
  45.  
  46.     my $extensions_ref = $info->{wpt}->[$i]->{extensions};
  47.  
  48.     for my $ap ( keys %{$extensions_ref} ) {
  49.         print "$ap => $extensions_ref->{$ap}\n";
  50.     }
  51.  
  52.     print '=' x 50, "\n";
  53. }
  54.  


Ahora voy a intentar llevar la información obtenida a un XLS.


Nota 2011-12-14 09:12 @425

Perlero Nuevo
Registrado: 2011-08-30 19:28 @853
Mensajes: 47
Re: Consulta de XML::Simple
explorer, ¿es muy complicado separar los print()? Así, con esto, puedo enviar cada dato a una columna del XLS. Así como está, obtengo todos los datos juntos.


Nota 2011-12-14 09:23 @433
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Consulta de XML::Simple
Pues... no...
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1.     print "networkType   => $extensions_ref->{networkType}\n";
  2.     print "rates         => $extensions_ref->{rates}\n";
  3.     print "SSID          => $extensions_ref->{SSID}\n";
  4.     print "MAC           => $extensions_ref->{MAC}\n";
  5.     print "signalQuality => $extensions_ref->{signalQuality}\n";
  6.     print "RSSI          => $extensions_ref->{RSSI}\n";
  7.     print "ChannelID     => $extensions_ref->{ChannelID}\n";

_________________
JF^D Perl programming


Responder al tema  [ 18 mensajes ]  Ir a página 1, 2  Siguiente

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO