Как управлять именами переменных в Data::Dumper Perl?

у меня есть простой Perl-скрипт:

#! /usr/bin/perl -w

use strict;
use Data::Dumper;

my %foo = ( 'abc' => 1 );

print Dumper(%foo);

выдает:

$VAR1 = {
          'abc' => 1
        };

как сделать так, чтобы он выводил это вместо этого?

%foo = (
         'abc' => 1
       );

4 ответов


print Data::Dumper->Dump( [ \%foo ], [ qw(*foo) ] );

расширенный синтаксис принимает два arrayrefs: один из скаляров для дампа и один из имен для использования. Если имя имеет префикс * и соответствующий скаляр является arrayref или hashref, создается назначение массива или хэша.


в дополнение к ответу ysth вы можете использовать Data::Dumper:: Names модуль.


use Data::Dumper;

$Data::Dumper::Terse = 1;

print '%foo = '.(Dumper \%foo);

и Data::Dumper:: Simple делает примерно это.