Если вы посмотрите вверх perlfaq7 , вы обнаружите, что ответом является использование прагмы overload , хотя они, вероятно, могли бы дать вопросу FAQ более подходящее имя (на мой взгляд ).
package SomeThing;
use overload
'+' => \&myadd,
'-' => \&mysub;
В основном (при условии, что $a
является объектом класса SomeThing
, а $b
нет), вышеприведенное перегрузит $a + $b
на $a->myadd($b, 0)
и $b + $a
на $a->myadd($b, 1)
(то есть третий аргумент - логическое значение, означающее, что «аргументы этого оператора перевернуты» и синтаксис «первый аргумент сам» сохраняется), и то же самое для -
и mysub
.
Прочитайте документацию для полного объяснения.