This is a blessed scalar. Something like this:
sub new { my ($class, $initial_int) = @_;; my $scalar = 0+($initial_int // 0); return bless \$scalar, $class; }
A more typical constructor would bless a hashref:
sub new { my ($class, $args) = @_; die "Constructor args must be passed as a hash reference.\n" if defined($args) && ref($args) ne 'HASH'; $args //= {}; return bless $args, $class; }
(Neither of these have a sufficient level of error checking on their input paramaters, and are intended as a demonstration only.)
But we'll look at the blessed scalar reference, as it's what is probably at play here. The last piece is this:
my $o = Foo->new(0); ${$o}++; # dereference $o, then increment the value of the scalar that + the scalar reference in $o points to. # Because the dereferencing sigil binds more closely than the postincr +ement operator, you can also do this: $$o++; # dereference $o, then increment the value of the scalar that t +he scalar reference in $o points to.
Dave
In reply to Re: Why does $$self++ works?
by davido
in thread Why does $$self++ works?
by rob25
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |