use strict; use warnings; $|++; package NoStringify; use Tie::Scalar; use Carp; our @ISA = ('Tie::StdScalar'); use overload q("") => sub { croak "Attempt to stringify reference" }; sub FETCH { # return $self rather than $$self ! my $self = shift; } package main; my $var = 10; my $ref = \$var; tie $ref, 'NoStringify'; my $val = $$ref; print "$val\n"; print $ref; __END__ Output: 10 Attempt to stringify reference at ...