SYNOPSIS
use Clone::Util qw(modclone sclone);
my $row = {name=>'ujang', gender=>'m', nationality=>'id'};
my $table = [
$row,
modclone { $_->{name} = 'budi' } $row,
modclone { $_->{name} = 'asep' } $row,
modclone { $_->{name} = 'rini'; $_->{gender} = 'f' } $row,
];
my $shallow_clone = sclone($data);
FUNCTIONS
None of the functions are exported by default, but they are exportable.
clone($data) => $cloned
This is just re-exported Function::Fallback::CoreOrPP's clone().
modclone(\&code, $data) => $clone
Clone $data and then run code. Code will be given the clone of data.
For convenience, $_ will also be localized and set to the clone of
data. So you can access the clone using $_ in addition to $_[0].
sclone($data) => $clone
Shallow-clone $data, which must be an arrayref or a hashref. Shallow
cloning means only copying the first level of data.
my $array = [0,1,2,[3]];
my $clone = sclone $array; # => [0,1,2,[3]], but [3] is still the same reference
$clone->[3][0] = "three"; # $clone as well as $array become [0,1,2,["three"]]
$clone->[0] = "zero"; # $clone becomes ["zero",1,...] but $array still [0,1,...]
You can perform shallow copying trivially yourself using:
my $cloned_array = [@$array];
my $cloned_hash = {%$hash};
SEE ALSO
Function::Fallback::CoreOrPP