2009-07-14 4 views
4

Как я могу сделать Data::Dumper написать дамп в файл?В Perl, как я могу написать вывод Dumper в файл?

+5

'Хранитель()' просто выводит строку, использовать его как любой другой строки собирается в файл (см. Ниже) –

+0

У меня огромное значение дампа, поэтому мне нужно сохранить это в файле и посмотреть. – joe

+0

Любая причина для проголосовать? – joe

ответ

22

Не забывайте, что вы можете указать дескриптор файла print как в

print $LOG Dumper(\%some_complex_hash); 

или использовать File::Slurp:

write_file 'mydump.log', Dumper(\%some_complex_hash); 

Дальнейшие мысли: Вы могли бы хотеть, чтобы попасть в Признание использования:

warn Dumper(\%some_complex_hash); 

и перенаправление стандартной ошибки в файл при вызове скрипта (как вы это делаете, зависит от оболочки). Например:

C:\Temp> sdf.pl 2>dump 
+0

Мне любопытно: какое преимущество предлагает File :: Slurp? – Telemachus

+1

Если все, что я хочу, - это сброс сложной структуры данных в файл для целей отладки, он более автономный, чем open/print/close: никаких дескрипторов файлов или сообщений об ошибках. –

+0

@ SinanÜnür как использовать $ LOG. должен $ LOG указывать на файл open ($ LOG, '>', 'file.txt'); – patz

5

Вопрос немного неясен, но вы ищете что-то вроде этого?

open my $FH, '>', 'outfile'; 
print $FH Dumper(\%data); 
close $FH; 

Вы можете восстановить данные позже, используя eval.

+6

Для хранения и восстановления позже Storable - это гораздо лучшая идея, чем Data: Dumper + eval: http://search.cpan.org/perldoc?Storable – Telemachus

+1

Telemachus верен. Storable, YAML, JSON, DBM :: Deep или любой из миллионов других модулей сериализации - лучший выбор, чем Data :: Dumper + eval. – daotoad

Смежные вопросы