Perl autoboxing coupled with operator overloading doesn't seem to work?

I'm trying to use both autoboxing Perl functions and operator overload functions, and they don't seem to work in tandem.

Is it possible that I lack some nuance about how to use overload correctly, or is this some kind of odd behavior with deviations?

Code example:

#!/usr/bin/perl
use strict;
use warnings;

package overload_me;
use overload('+' => "overloaded_add");
sub overloaded_add{
    my ($me, $him) = @_;
    $me+$him+1;
}

use autobox NUMBER => 'overload_me';
my $autoboxing_test = 4->overloaded_add(5);
my $overloading_test = 4 + 5;
print "Autoboxing test: 4+5=$autoboxing_test 
Overloading test: 4+5=$overloading_test\n";

Test output:

Autoboxing test: 4+5=10 Overloading test: 4+5=9
+3
source share
1 answer

4 overload_me. 4 overload_me. , , , overload . 4 . 4, 4 + 5, 4 + 5.

autobox:

: ( ) ( ), , .

+6

Source: https://habr.com/ru/post/1795129/


All Articles