【问题标题】:In Perl, how can I write the output of Dumper to a file?在 Perl 中,如何将 Dumper 的输出写入文件?
【发布时间】:2009-07-14 15:07:53
【问题描述】:

如何让Data::Dumper 将转储写入文件?

【问题讨论】:

  • Dumper() 只是输出一个字符串,使用它就像任何其他进入文件的字符串一样(见下文)。
  • 我有巨大的转储值,所以我需要将它保存到文件中并查看。
  • @JACK 我同意你的观点

标签: perl debugging dump data-dumper


【解决方案1】:

别忘了你可以把print的文件句柄指定为如

print $LOG Dumper( \%some_complex_hash );

或使用File::Slurp:

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

进一步的想法:您可能想养成使用的习惯:

warn Dumper( \%some_complex_hash );

并在调用脚本时将标准错误重定向到文件(如何执行此操作取决于 shell)。例如:

 C:\Temp> sdf.pl 2>dump

【讨论】:

  • 我很好奇:File::Slurp 在这里有什么优势?
  • 如果我只想将复杂的数据结构转储到文件中以进行调试,那么它比打开/打印/关闭更独立:没有文件句柄或错误消息可以弄乱。
  • @SinanÜnür $LOG 应该如何使用。 $LOG 是否应该指向打开的文件 ($LOG, '>', 'file.txt');
  • @patz $LOG 是一个文件句柄,正如我前面明确指出的那样。
【解决方案2】:

使用print

print FILE Data::Dumper->Dump($object);

【讨论】:

    【解决方案3】:

    这个问题有点不清楚,但是你在寻找这样的东西吗?

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

    您可以稍后使用eval 恢复数据。

    【讨论】:

    • 为了以后的存储和恢复,Storable 比 Data::Dumper + eval:search.cpan.org/perldoc?Storable
    • Telemachus 是正确的。 Storable、YAML、JSON、DBM::Deep 或其他一百万个序列化模块中的任何一个都是比 Data::Dumper + eval 更好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2014-01-28
    • 2011-06-26
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多