#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Storable qw(dclone freeze thaw); my $href = undef; $href = { 'a' => { 'status' => 'OK' }}; print "BEFORE SUB: " . $href->{a}->{status} . "\n"; do_stuff($href); print "AFTER SUB: " . $href->{a}->{status} . "\n"; sub do_stuff { my $hash = shift; my $hash2 = freeze($hash); $hash->{'a'}->{'status'} = "NOT OK"; $hash = thaw($hash2); print "IN SUB: " . $hash->{'a'}->{'status'} . "\n"; return 0; } #### $ ~/test.pl BEFORE SUB: OK IN SUB: OK AFTER SUB: NOT OK