use strict; use warnings; use Scalar::Util qw( refaddr ); package Foo; use overload '0+' => sub { 0 }, q{""} => sub { "Some Object" }, fallback => 1; package main; use overload; sub refaddr_pp { return if not ref $_[0]; overload::StrVal($_[0]) =~ /0x(\w+)/; return hex $1; } my $obj = bless {}, 'Foo'; my $ref = {}; print 'stringify $obj: ', "$obj", "\n"; print 'refaddr $obj: ', refaddr($obj), "\n"; print 'refaddr_pp $obj: ', refaddr_pp($obj), "\n\n"; print 'stringify $ref: ', "$ref", "\n"; print 'refaddr $ref: ', refaddr($ref), "\n"; print 'refaddr_pp $ref: ', refaddr_pp($ref), "\n\n";