#!/usr/bin/perl -w use strict; my %object = constructor(); $object{save}->('name' => 'smith'); print $object{count}->(), $/; my $name = $object{lookup}->('name'); $object{delete}->('name'); print $object{count}->(), $/; print "My name is $name\n"; sub constructor { my %object; return 'save' => sub { my ($key, $val) = @_; die "save method requires two parameters" if ! defined $val; $object{$key} = $val; return; }, 'delete' => sub { my $key = shift; return delete $object{$key}; }, 'lookup' => sub { my $key = shift; return $object{$key}; }, 'count' => sub { return scalar keys %object; } }