sub new { my ($class, $initial_int) = @_;; my $scalar = 0+($initial_int // 0); return bless \$scalar, $class; } #### 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; } #### 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 postincrement operator, you can also do this: $$o++; # dereference $o, then increment the value of the scalar that the scalar reference in $o points to.