Created by
Glenn Fowler
| use warnings;
use strict;
use Test::Most;
use Readonly;
use Storable qw(dclone);
use Clone qw(clone);
sub get_config {
Readonly my %config => (
test => 1,
deeper => {
deeper_still => {
more_deeperer => 0,
},
},
);
return \%config;
}
my $config = get_config();
my $copy = dclone $config;#{%$config};
lives_ok { $copy->{ok} = 1 } 'Can write copy';
dies_ok { $config->{ok} = 1 } 'Cannot write readonly';
lives_ok {$copy->{deeper}->{deeper_still}->{more_deeperer} = 1} 'Can deeply write copy';
dies_ok {$config->{deeper}->{deeper_still}->{more_deeperer} = 1} 'Cannot deeply write readonly';
is $copy->{deeper}->{deeper_still}->{more_deeperer}, 1, 'Copy got written';
is $config->{deeper}->{deeper_still}->{more_deeperer}, 0, 'Original did not got written';
done_testing;
|