sintaxis regulares programacion manejo expresiones ejemplos archivos perl clone

regulares - ¿Cuál es la mejor manera de hacer una copia profunda de una estructura de datos en Perl?



perl manejo de archivos (3)

Mi impresión es que Storable::dclone() es algo canónico.

Dada una estructura de datos (por ejemplo, un hash de hashes), ¿cuál es la forma limpia / recomendada de hacer una copia profunda para uso inmediato? Supongamos casos razonables, donde los datos no son particularmente grandes, no existen ciclos complicados, y legibilidad / mantenibilidad / etc. son más importantes que la velocidad a toda costa.

Sé que puedo usar Storable , Clone , Clone :: More, Clone::Fast , Data::Dumper , etc. ¿Cuál es la mejor práctica actual?


Clone es probablemente lo que quieres para eso. Al menos, eso es lo que usa todo el código que he visto.


Clone es mucho más rápido que Storable::dclone , pero este último admite más tipos de datos.

Clone::Fast y Clone::More son bastante equivalentes si la memoria me sirve, pero hay menos funciones completas que incluso Clone, y Scalar::Util::Clone admite incluso menos, pero el IIRC es el más rápido de todos para algunas estructuras.

Con respecto a la legibilidad, todos deberían funcionar de la misma manera, son virtualmente intercambiables.

Si no tiene necesidades de rendimiento específicas, simplemente usaría el dclone de Storable.

No usaría Data::Dumper para esto simplemente porque es muy engorroso y tortuoso. Probablemente va a ser muy lento también.

Por si sirve de algo, si alguna vez quieres una clonación personalizable, Data::Visitor proporciona capacidades de enganche y la característica bastante completa es que la clonación profunda es el comportamiento predeterminado.