package alias; use strict; BEGIN { use base qw(Exporter); @alias::EXPORT = qw(make_alias); } sub make_alias { tie $_[0], __PACKAGE__, \$_[1]; } sub TIESCALAR { my($class, $target_ref) = @_; bless $target_ref, $class; } sub STORE { my $self = shift; $$self = shift; } sub FETCH { my $self = shift; $$self; } 1; #### use alias; my $self = { x => 1 }; make_alias my $x, $self->{x}; $x = 100; print $self->{x}; # 100