#!/usr/bin/perl use strict; use warnings; package aaa; { use overload ( '""' => sub { return(1000000000000000) }, '0+' => sub { return(1000000000000000) }, 'fallback' => 1 ); sub new { return (bless({}, shift)); } } package bbb; { use overload ( '""' => sub { return(999999999999999) }, '0+' => sub { return(999999999999999) }, 'fallback' => 1 ); sub new { return (bless({}, shift)); } } package main; { print("Object overloaded as 16-digit integer\n"); my $a = aaa->new(); print("STRING: $a\n"); print('NUMBER: ', 0 + $a, "\n\n"); print("Object overloaded as 15-digit integer\n"); my $b = bbb->new(); print("STRING: $b\n"); print('NUMBER: ', 0 + $b, "\n\n"); print("Addition with 16-digit integer\n"); print('NUMBER: ', 0 + 1000000000000000, "\n"); }