これを見て、独自のシリアル化をロールするかどうか疑問に思っている人は、いくつかの既存のシリアライザーのリストを比較し、それぞれの長所と短所を示すこのブログ投稿を見ると、いくつかの利点が得られる可能性があります。
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について言及しています。彼は、それらすべてに欠けている機能があると結論付けています。
結論として、選択は良いですが、私はまだ完璧な一般的なシリアル化モジュールを見つけていません。私の2つのお気に入りは、StorableとYAML::XSです。JSYNCがより高速でRegexpをサポートしている場合、またはYAML::XSまたはYAML::Syckがインライン/コンパクトYAMLを出力する場合、それは私が望むほど完璧に近いでしょう。
コメントで人々が作ったポイントも参照してください。以前に問題に遭遇したことのある人などの視点を得るのは良いことです。
独自のシリアル化を行う場合は、そこに記載されている長所と短所(速度、正規表現や循環参照などを処理する能力など)を確認することをお勧めします。これにより、遭遇する可能性が高いことに気付いていない問題が発生する可能性があります。
また、シリアル化にDumperを使用している場合は、Data::Dumperが出力に提供するすべてのオプションを理解しておくとよいでしょう。
将来、誰かがLIKEパターンでSQLクエリを実行したいと思うデータベースに入るのでしょうか。もしそうなら、Sortkeysを使用したことをうれしく思います。なぜなら、LIKE'%akey = front%ckey = front_of_c%'を実行でき、n階乗の代わりに1つの順序しか気にしないからです。
例として、私の友人がDumperでのシリアル化に使用するものを次に示します。
my $deflated = Data::Dumper->new([$data])->Purity(1)->Terse(1)->Deepcopy(1)->Sortkeys(1)->Indent(1)->Dump;
これらのオプションがどのような変更を加えるかを理解できるように、Dumperのドキュメントを読むことをお勧めします。