Skip to content

atoomic/Clone

This branch is 1 commit ahead of, 1 commit behind garu/Clone:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3ae6e5c · Aug 17, 2024
Apr 27, 2024
Jul 17, 2023
Jul 17, 2019
Aug 17, 2024
Aug 17, 2024
Oct 14, 2022
Oct 17, 2022
Oct 17, 2022
Oct 17, 2022
Oct 18, 2022
Oct 14, 2022

Repository files navigation

Clone - recursively copy Perl datatypes

Build Status Coverage Status CPAN version

This module provides a clone() method which makes recursive copies of nested hash, array, scalar and reference types, including tied variables and objects.

    use Clone 'clone';

    my $data = {
       set => [ 1 .. 50 ],
       foo => {
           answer => 42,
           object => SomeObject->new,
       },
    };

    my $cloned_data = clone($data);

    $cloned_data->{foo}{answer} = 1;
    print $cloned_data->{foo}{answer};  # '1'
    print $data->{foo}{answer};         # '42'

You can also add it to your class:

    package Foo;
    use parent 'Clone';
    sub new { bless {}, shift }

    package main;

    my $obj = Foo->new;
    my $copy = $obj->clone;

clone() takes a scalar argument and duplicates it. To duplicate lists, arrays or hashes, pass them in by reference, e.g.

    my $copy = clone (\@array);

    # or

    my %copy = %{ clone (\%hash) };

See Also

Storable's dclone() is a flexible solution for cloning variables, albeit slower for average-sized data structures. Simple and naive benchmarks show that Clone is faster for data structures with 3 or fewer levels, while dclone() can be faster for structures 4 or more levels deep.

COPYRIGHT

Copyright 2001-2022 Ray Finch. All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Ray Finch <[email protected]>

Breno G. de Oliveira <[email protected]>, Nicolas Rochelemagne <[email protected]> and Florian Ragwitz <[email protected]> perform routine maintenance releases since 2012.

About

recursively copy Perl datatypes

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Perl 75.0%
  • XS 25.0%