package Counter; use strict; use Carp; sub new { my ($class,$value) = @_; $value ||= 0; my $self = bless {}, $class; croak "Argument to constructor must be positive integer." if ! $self->_good_value( $value ); $self->{_value} = $value; return $self; } sub value { my $self = shift; $self->{_value} = $_[0] if $self->_good_value($_[0]); return $self->{_value}; } sub increment_value { my $self = shift; $self->{_value}++; } sub decrement_value { my $self = shift; $self->{_value}--; } sub _good_value { my ( $self, $value ) = @_; return 0 if ! defined $value; $value =~ /^\d+$/; } 1; #### #!/usr/bin/perl -w use strict; BEGIN { unshift @INC, '.'; # add current directory to include path use Counter; } my $counter = Counter->new; print $counter->value, "\n"; $counter->increment_value; print $counter->value, "\n"; $counter->decrement_value; print $counter->value, "\n"; $counter->value(3); print $counter->value, "\n";