use strict; use warnings; use Data::Dump; package Counter; my %data; sub new { my ($class, $start) = @_; my $lu; my $self = bless \$lu, $class; $data{$lu = "$self"} = {count => $start}; return $self; } sub add { my ($self, $value) = @_; $self = $data{$$self}; $self->{count} += $value; } sub get { my ($self) = @_; $self = $data{$$self}; return $self->{count}; } package main; my $ctr = Counter->new (7); print "Start: " . $ctr->get () . "\n"; $ctr->add (3); print "End: " . $ctr->get () . "\n";