use Tie::ReverseScalar; sub Reverse :lvalue { my $x = @_ ? \$_[0] : \$_; tie $x, 'Tie::ReverseScalar', $$x; $x } $_ = 'foo'; chop Reverse; print; __END__ oo