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.