#class Address using inside-out objects package Address; use Scalar::Util qw(refaddr); use strict; use warnings; my %street; my %city; my %state; my %zip; #constructor sub new { my ($class, $street, $city, $state, $zip) = @_; # Get any old (unique) reference my $self = bless \do{my $gash}, $class; my $key = refaddr $self; # Extract the address $street{$key} = $street; $city {$key} = $city; $state {$key} = $state; $zip {$key} = $zip; return $self; } sub street { my ( $self, $street ) = @_; my $key = refaddr $self; $street{$key} = $street if defined($street); return $street{$key}; } sub city { my ( $self, $city ) = @_; my $key = refaddr $self; $city{$key} = $city if defined($city); return $city{$key}; } sub state { my ( $self, $state ) = @_; my $key = refaddr $self; $state{$key} = $state if defined($state); return $state{$key}; } sub zip { my ( $self, $zip ) = @_; my $key = refaddr $self; $zip{$key} = $zip if defined($zip); return $zip{$key}; } sub print { my ($self) = @_; my $key = refaddr $self; print "Address: $street{$key}\n". "$city{$key}\n" . "$state{$key}\n" . "$zip{$key}\n\n" ; } 1;
In reply to Re^2: object oriented tutorial question
by cdarke
in thread object oriented tutorial question
by convenientstore
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |