# HashRefが要素になっているArrayRefを作る my $milkyhomes = [ { foo_id => 1, name => 'シャロ' }, { foo_id => 2, name => 'ネロ' }, { foo_id => 3, name => 'コーデリア' }, { foo_id => 4, name => 'エリー' }, ]; # なんかいじいじしたいからコピーする my @g4 = @$milkyhomes; # いじる $g4[0]->{name} = '明智小衣'; # もともとのはどうなるねん use DDP; p $milkyhomes;
\ [ [0] { foo_id 1, name "明智小衣" }, [1] { foo_id 2, name "ネロ" }, [2] { foo_id 3, name "コーデリア" }, [3] { foo_id 4, name "エリー" } ]
まあそうですよね。。。外側だけコピーしても中身はアレや
追記
id:tokuhiromさんにStorable::dcloneっていうのがあるよってボソッと教えていただいたので、やってみました。
#!/usr/bin/env perl use strict; use warnings; use utf8; use Storable qw/dclone/; my $milkyhomes = [ { foo_id => 1, name => 'シャロ' }, { foo_id => 2, name => 'ネロ' }, { foo_id => 3, name => 'コーデリア' }, { foo_id => 4, name => 'エリー' }, ]; # なんかいじいじしたいからコピーする my $g4 = dclone $milkyhomes; # いじる $g4->[0]->{name} = '明智小衣'; # もともとのはどうなるねん use DDP; p $milkyhomes;
\ [ [0] { foo_id 1, name "シャロ" }, [1] { foo_id 2, name "ネロ" }, [2] { foo_id 3, name "コーデリア" }, [3] { foo_id 4, name "エリー" } ]
ウェーイ!
Storable is core module!!!!