Dual-license your content for inclusion in The Perl 5 Wiki using this HOWTO, or join us for a chat on irc.freenode.net#PerlNet.
Melbourne Perl Mongers/8th March 2006/AddressBook.pm
From PerlNet
Save as lib/AddressBook.pm
package AddressBook;
use Storable;
sub new {
my ($class) = @_;
my $self = bless {}, ref ($class) || $class;
$self->readdata;
return $self;
}
sub readdata {
my ($self) = @_;
if (-f 'address.sto') {
$self->{DATA} = retrieve('address.sto');
} else {
$self->{DATA} = {};
}
}
sub writedata {
my ($self) = @_;
store($self->{DATA}, 'address.sto');
}
sub list {
my ($self) = @_;
return keys %{$self->{DATA}};
}
sub entry {
my ($self, $id) = @_;
return $self->{DATA}{$id};
}
sub search {
my ($self, $field, $value) = @_;
my @ret = ();
foreach my $key (keys %{$self->{DATA}}) {
if ($self->{DATA}{$key}{$field} =~ /$value/i) {
push @ret, $key;
}
}
return @ret;
}
sub update {
my ($self, $id, %data) = @_;
foreach my $key (keys %data) {
$self->{DATA}{$id}{$key} = $data{$key};
}
}
1;

