Я не хочу использовать настройки по умолчанию Data :: Dumper, что мне делать? - PullRequest
2 голосов
/ 28 июля 2011

Я постоянно использую этот метод для печати значений Perl:

sub d {
  Data::Dumper->new([])->Terse(1)->Indent(0)->Values([$_[0]])->Dump;
}

say "x = ", d($x), ' y = ', d($y);

Мне нравится это, потому что я не хочу $VAR1 = в своем выводе, и я редко имею дело с рекурсивными даннымиструктуры.

Но мысль о создании нового объекта Data::Dumper и выполнении этой длинной цепочки инициализаций каждый раз, когда я вызываю d(), беспокоит меня.

Есть ли другой строковый преобразователь, который я могу использовать?

Ответы [ 4 ]

5 голосов
/ 28 июля 2011
sub d {
  use feature 'state';

  state $dd = Data::Dumper->new([])->Terse(1)->Indent(0);
  return $dd->Values(shift)->Dump;
}

Не проверено, но что-то вроде этого должно работать.

5 голосов
/ 28 июля 2011

Вариант 1, используйте Data::Dumper переменные :

$Data::Dumper::Terse  = 1;
$Data::Dumper::Indent = 0;

say Dumper "x =", Dumper($x), " y = ", Dumper($y);  
4 голосов
/ 28 июля 2011

Я пытался Data::Dump и никогда не оглядывался назад.

use Data::Dump 'dump';

dump $structure;
1 голос
/ 28 июля 2011

Data :: Dumper :: Concise удобно.Не те настройки, которые вам нужны, но, возможно, хорошие для кого-то другого.Sortkeys особенно важно

Из документации:

Data::Dumper::Concise;
warn Dumper($var);

эквивалентно:

use Data::Dumper;
{
  local $Data::Dumper::Terse = 1;
  local $Data::Dumper::Indent = 1;
  local $Data::Dumper::Useqq = 1;
  local $Data::Dumper::Deparse = 1;
  local $Data::Dumper::Quotekeys = 0;
  local $Data::Dumper::Sortkeys = 1;
  warn Dumper($var);
}
...