package CSLocal; my $VALUE; use strict; my @value_stack = (); sub undefine_value { undef $VALUE; } sub value {        $VALUE = $_[0] if @_; } sub localize {        push @value_stack, value ();        undefine_value (); } sub restore {        die "no values to restore" unless @value_stack;        my $val = pop @value_stack;        value ($val); } 1;