#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
my $cfg = { x => 'cat' };
say 'INITIAL: ', $cfg;
example_sub();
$cfg->{x} = 'mouse';
say 'CHANGE1: ', $cfg;
example_sub();
$cfg = { x => 'rat' };
say 'CHANGE2: ', $cfg;
example_sub();
sub example_sub {
say cfg_cache()->{x};
}
sub cfg_cache {
state $cfg = $cfg;
say 'CACHED: ', $cfg;
return $cfg;
}
####
INITIAL: HASH(0x7ff0f8802ee8)
CACHED: HASH(0x7ff0f8802ee8)
cat
CHANGE1: HASH(0x7ff0f8802ee8)
CACHED: HASH(0x7ff0f8802ee8)
mouse
CHANGE2: HASH(0x7ff0f8829c38)
CACHED: HASH(0x7ff0f8802ee8)
mouse
####
sub cfg_cache {
state $cfg_ref = \$cfg;
say 'CACHED: ', $$cfg_ref;
return $$cfg_ref;
}
####
INITIAL: HASH(0x7fd539802ee8)
CACHED: HASH(0x7fd539802ee8)
cat
CHANGE1: HASH(0x7fd539802ee8)
CACHED: HASH(0x7fd539802ee8)
mouse
CHANGE2: HASH(0x7fd539829c38)
CACHED: HASH(0x7fd539829c38)
rat
####
sub cfg_cache {
state $cfg_ref = { %$cfg };
say 'CACHED: ', $cfg_ref;
return $cfg_ref;
}
####
INITIAL: HASH(0x7fd88c002ee8)
CACHED: HASH(0x7fd88c029c50)
cat
CHANGE1: HASH(0x7fd88c002ee8)
CACHED: HASH(0x7fd88c029c50)
cat
CHANGE2: HASH(0x7fd88c029c38)
CACHED: HASH(0x7fd88c029c50)
cat