Impresión de Estructuras Anidadas

Para imprimir una estructura de datos compleja existen varias soluciones. La mas común es usar el módulo Data::Dumper.

La Función dumpValue de dumpvar.pl

El módulo forma parte de la distribución de Perl desde la versión 5.5:

nereida:~> perl -MModule::CoreList -e \
   'print Module::CoreList->first_release("Data::Dumper")."\n"'
5.005

Si la versión de Perl con la que trabajamos es antigua, existe una solución se puede usar la función dumpValue que se encuentra en el fichero dumpvar.pl que se distribuye con la librería estandar. Sigue un ejemplo:

$ cat mydumpvalue.pl
#!/usr/bin/perl -w
use strict;

require 'dumpvar.pl';

my @a = (1, {A => ['AB', 'empty'], B => ['bB', 'empty']});

dumpValue(\@a); # recibe su argumento como una referencia
$ ./mydumpvalue.pl
0  1
1  HASH(0x8106af0)
   'A' => ARRAY(0x8103068)
      0  'AB'
      1  'empty'
   'B' => ARRAY(0x8106b68)
      0  'bB'
      1  'empty'

El Módulo Data::Dumper

El módulo Data::Dumper convierte la lista de escalares pasada como parámetro a su función Dumper en una cadena conteniendo código Perl que describe la estructura de datos.

nereida:~/alu/0607/alu2644> perl -wde 0
main::(-e:1):   0
  DB<1> use Data::Dumper
  DB<2> @a = (1, {A => ['AB', 'empty'], B => ['bB', 'empty']})
  DB<3> p Dumper(\@a)
$VAR1 = [
          1,
          {
            'A' => [
                     'AB',
                     'empty'
                   ],
            'B' => [
                     'bB',
                     'empty'
                   ]
          }
        ];
  DB<4> $Data::Dumper::Indent = 0
  DB<5> p Dumper(\@a)
$VAR1 = [1,{'A' => ['AB','empty'],'B' => ['bB','empty']}];
  DB<6> $Data::Dumper::Indent = 1
  DB<8> p Dumper(\@a)
$VAR1 = [
  1,
  {
    'A' => [
      'AB',
      'empty'
    ],
    'B' => [
      'bB',
      'empty'
    ]
  }
];
  DB<9> $Data::Dumper::Indent = 3
  DB<10> p Dumper(\@a)
$VAR1 = [
          #0
          1,
          #1
          {
            'A' => [
                     #0
                     'AB',
                     #1
                     'empty'
                   ],
            'B' => [
                     #0
                     'bB',
                     #1
                     'empty'
                   ]
          }
        ];



Subsecciones
Casiano Rodríguez León
2009-10-04