package Person;
use strict;
use warnings;
use diagnostics;
my $Census = 0;
sub new{
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
$self->{NAME} = undef;
# "private" data
$self->{"_CENSUS"} = \$Census;
bless ($self, $class);
++ ${ $self->{"_CENSUS"} };
return $self;
}
sub name {
my $self = shift;
if (@_) { $self->{NAME} = shift }
return $self->{NAME};
}
1; # so the require or use succeeds
sub DESTROY {
my $self = shift;
print $self->{NAME}." dies now: life was nice\n";
-- ${ $self->{"_CENSUS"} };
}
####
#! /usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
use Person;
my $me = new Person;
$me->name("Andy");
$me->DESTROY;
####
Andy dies now: life was nice
Andy dies now: life was nice