Snippets

Glenn Fowler kybb: Untitled snippet

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;

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.