package Number::HexString; use overload '""' => sub { sprintf '0x%x', ${$_[0]} }, '0+' => sub { ${$_[0]} }, 'fallback' => 1; sub new { my $class = shift; my $number = 0+shift; return bless \$number, $class; } package main; my $theHex = Number::HexString->new( 1501299200 ); print "$theHex plus 1 is ", $theHex + 1, "\n"; print 'The number ', $theHex+0, " is '$theHex'\n"; __END__ 0x597c0200 plus 1 is 1501299201 The number 1501299200 is '0x597c0200'