Вы хотите:
$Data::Dumper::Terse = 1;
См. документацию .
$ Data :: Dumper :: Terse или $ OBJ-> Terse ([NEWVAL])
Если установлено, Data :: Dumper будет генерировать одиночные несамостоятельные ссылочные значения в виде атомов / терминов, а не операторов. Это означает, что имена $VAR
n будут по возможности избегаться, но имейте в виду, что такие выходные данные не всегда могут быть проанализированы с помощью eval
.
Обновление (для ответа на комментарий ниже):
Data :: Dumper добавит правильную пунктуацию, чтобы вы могли вернуть именно то, что вы даете. Если вы дадите ему ссылку на хеш, то получите строку, которая начинается и заканчивается фигурными скобками.
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; say Dumper { foo => { bar => "baz" }}'
{
'foo' => {
'bar' => 'baz'
}
}
Если вы дадите ему ссылку на массив, вы получите строку, которая начинается и заканчивается квадратными скобками.
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; say Dumper [ foo => { bar => "baz" }]'
[
'foo',
{
'bar' => 'baz'
}
]
Если по какой-либо причине вам не нужен ни один из них, предоставьте ему список значений.
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; say Dumper ( foo => { bar => "baz" })'
'foo'
{
'bar' => 'baz'
}
Если у вас есть ссылка на хеш, и вы не хотите, чтобы окружающие скобки (честно говоря, кажутся странным требованием), прервите ссылку, прежде чем передавать ее в Dumper()
. Это преобразует ссылку на хеш в хеш, и хеш будет «развернут» в список, если он будет передан в функцию.
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; $ref = { foo => { bar => "baz" }}; say Dumper %$ref'
'foo'
{
'bar' => 'baz'
}