给定一个数据结构(例如散列哈希),什么是干净/推荐的方式来制作深层副本以供立即使用?假设合理的情况,数据不是特别大,没有复杂的循环,可读性/可维护性等.不惜一切代价比速度更重要.
我知道我可以使用Storable,Clone,Clone :: More,Clone :: Fast,Data :: Dumper等.目前的最佳做法是什么?
Clone
比它快得多Storable::dclone
,但后者支持更多的数据类型.
Clone::Fast
并且Clone::More
是几乎等价的,如果没记错的话,但更小的特征,甚至比克隆完整,Scalar::Util::Clone
更不支持,但IIRC是一些结构最快的这一切.
关于可读性,这些应该都是相同的,它们实际上是可以互换的.
如果您没有特定的性能需求,我会使用Storable的dclone.
我不会Data::Dumper
因为它如此繁琐和迂回而使用它.它可能会非常缓慢.
对于它的价值,如果您想要可定制的克隆,那么Data::Visitor
提供挂钩功能和相当完整的功能,完整的深度克隆是默认行为.
我的印象是Storable::dclone()
有点规范.
克隆可能是你想要的.至少,这就是我见过的所有代码所用的东西.