在Perl中制作数据结构的深层副本的最佳方法是什么?
给定一个数据结构(如散列哈希),什么是干净/推荐的方式来做一个深层复制立即使用? 假设合理的情况下,数据不是特别大,没有复杂的循环存在,可读性/可维护性等。 比速度更重要。
我知道我可以使用Storable , Clone ,Clone :: More, Clone :: Fast , Data :: Dumper等。目前的最佳做法是什么?
Clone
比Storable::dclone
,但后者支持更多的数据types。
Clone::Fast
和Clone::More
是相当相当的,如果内存服务我的权利,但function甚至比克隆less,而Scalar::Util::Clone
支持更less,但二垒是其中最快的一些结构。
关于可读性,这些应该都是一样的,它们几乎是可以互换的。
如果您没有具体的性能需求,我只能使用Stored的dclone。
我不会使用Data::Dumper
,因为它非常笨重和迂回。 这可能会很慢。
值得一提的是,如果您想要自定义克隆,那么Data::Visitor
提供挂钩function,而相当完整的function则是默认行为。
我的印象是, Storable::dclone()
是有点规范的。
克隆可能是你想要的。 至less,这就是我见过的所有代码所使用的。