Если вы хотите остаться с чем-то простым и понятным для человека, просто используйте модуль Data::Dump
вместо Data::Dumper
. По сути, это Data::Dumper
сделано правильно - он генерирует допустимые выражения Perl, готовые для назначения, без создания всех этих странных $VAR1
, $VAR2
и т. Д. Переменных.
Тогда, если ваш код выглядит так:
my $x = [ { foo => 'bar', asdf => undef }, 0, -4, [ [] ] ];
Сохраните его, используя:
use Data::Dump "pp";
open F, ">dump.txt";
print F pp($x);
Создает файл dump.txt
, который выглядит (по крайней мере, на моем компьютере):
[{ asdf => undef, foo => "bar" }, 0, -4, [[]]]
Загрузить его с помощью:
open F, "dump.txt";
my $vars;
{ local $/ = undef; $vars = <F>; }
my $x = eval $vars;
Обратите внимание, что
- Если вы хотите поместить назначение в
$/
в своем собственном блоке, вы должны использовать local
, чтобы убедиться, что его значение действительно восстановлено в конце блока; и
- Результат
eval()
должен быть присвоен $x
.