use Data::Dumper; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Indent = 0; my $args = { foo => 1, baz => 2, }; print "Before calling mysub(\$args)\n"; print Dumper($args), "\n\n"; mysub($args); print "After calling mysub(\$args)\n"; print Dumper($args), "\n\n"; sub mysub { my $args = shift; local $args->{'foo'} = $args->{'foo'}; $args->{'foo'} += 100; # 101 now. print "Inside mysub()\n"; print Dumper($args), "\n\n"; othersub($args); } sub othersub { my $args = shift; local $args->{'baz'}; delete $args->{'baz'}; print "Inside othersub()\n"; print Dumper($args), "\n\n"; }