对于任何看到这个并想知道是否推出自己的序列化的人,通过查看这篇博客文章可能会获得一些好处,该文章比较了几个现有序列化器的列表并给出了每个序列化器的一些优点和缺点:
http://blogs.perl.org/users/steven_haryanto/2010/09/comparison-of-perl-serialization-modules.html
他提到了 Data::Dumper、Storable、YAML::XS、Data::Dump、XML::Dumper、JSON::XS、JSYNC 和 FreezeThaw。他得出的结论是,所有这些都缺少一些功能:
总之,选择是好的,但我还没有找到我完美的通用序列化模块。我最喜欢的两个是 Storable 和 YAML::XS。如果 JSYNC [was] 更快并且支持 Regexp,或者如果 YAML::XS 或 YAML::Syck [可以] 输出 inline/compact YAML,那将是我想要的接近完美。
另请参阅人们在评论中提出的观点。了解以前遇到问题的人的观点是件好事,等等。
如果您正在滚动自己的序列化,您可能想看看那里提到的优缺点(速度、处理正则表达式和循环引用等问题的能力等)。这可能会阻止您没有意识到自己可能会遇到的问题。
此外,当您使用 Dumper 进行序列化时,最好了解 Data::Dumper 为您提供的所有输出选项。
它是否进入数据库,在未来的某个时间,有人想要使用 LIKE 模式进行 SQL 查询?如果是这样,你会很高兴你使用了 Sortkeys,因为你可以做 LIKE '%akey=front%ckey=front_of_c%' 并且你只需要担心一个排序而不是 n 阶乘。
例如,我的一个朋友使用 Dumper 进行序列化:
my $deflated = Data::Dumper->new([$data])->Purity(1)->Terse(1)->Deepcopy(1)->Sortkeys(1)->Indent(1)->Dump;
我建议您阅读 Dumper 的文档,以便您了解这些选项所做的修改。