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

Jump to: navigation, search

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;
Personal tools