Создать структуру данных в Perl

Я лично использую этот: http://wyw.dcweb.cn/time.htm

1
задан olivierg 17 January 2019 в 16:12
поделиться

1 ответ

Вы хотите:

$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'
}
0
ответ дан Dave Cross 17 January 2019 в 16:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: