#!/usr/bin/perl use strict; use warnings ; ############################################################################### package ChimeFault::EventCache; # return an empty ring structure sub new { my $class = shift; my $self = bless {}, $class; $self->{cache} = {} ; return $self; } sub entriesdata { my ($self,$event) = @_; unless (defined $self->{cache}->{$event}->{entries}) { @{$self->{cache}->{$event}->{entries}} = $event->entries; } return @{$self->{cache}->{$event}->{entries}}; } package ChimeFault::Event ; sub new { my $class = shift; my $self = bless {}, $class ; $self->{id} = shift ; print "new event " . $self->{id} . "\n" ; return $self ; } sub faultid { my $self = shift ; return $self->{id} ; } sub entries { my $self= shift ; print "doing lookup for event " . $self->{id} . "\n" ; return ($self->{id} .. 5) ; } package main ; use Data::Dumper ; my $cache = new ChimeFault::EventCache ; my $event = new ChimeFault::Event(1) ; my $event2 = new ChimeFault::Event(2) ; print Dumper($cache->entriesdata($event)) ; print Dumper ($cache->entriesdata($event) ) ; print Dumper($cache->entriesdata($event2)) ; 1;