1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
package Atheme::Internal::ServiceHash;
use strict;
use warnings;
use Atheme::Service;
use Atheme::Log;
use Carp;
require Tie::Hash;
our @ISA = 'Tie::StdHash';
sub TIEHASH {
my ($class) = @_;
$class = ref $class || $class;
return bless {}, $class;
}
sub FETCH {
my ($self, $service) = @_;
Atheme::Log->debug("perl -- looking up $service");
$self->{$service} ||= Atheme::Service->find($service) or Atheme::Service->create($service);
return $self->{$service};
}
sub readonly {
croak "Attempted to modify Service hash.";
}
sub STORE { goto &readonly; }
sub DELETE { goto &readonly; }
sub CLEAR { goto &readonly; }
1;
|