package SomeData; use overload '+' => 'add', '-' => 'subtract', fallback => 1; sub add { my ($x, $y) = @_[0..1]; ($x, $y) = ($y, $x) if $_[2]; $self->{is_number} ? $x + $y : $x . $y; }