package Tie::ReverseScalar; sub TIESCALAR { my $class = shift; return bless \$_[0] => $class; } sub FETCH { return reverse ${$_[0]}; } sub STORE { ${$_[0]} = reverse $_[1]; } sub DESTROY { undef ${$_[0]}; } 1; #### use Tie::ReverseScalar; sub Reverse :lvalue { my $x = @_ ? \$_[0] : \$_; tie $x, 'Tie::ReverseScalar', $$x; $x } $_ = 'foo'; chop Reverse; print; __END__ oo #### ------------ :Wq Not an editor command: Wq