package HashRef; sub new { my $class=shift; my $ref=shift || {}; $ref=ref($ref) eq 'HASH'? $ref : {}; my $self={ref=>$ref); $self->{cnt}=0; bless($self,$class); return $self; } sub unref { my $self=shift; $self->{cnt}=0; return(%{$self->{ref}}); } sub ref { my $self=shift; $self->{cnt}=0; if(@_ && ref($[0]) eq 'HASH') { $ref{ref} } else { return $self->{ref} } } sub keys { my $self=shift; $self->{cnt}=0; return(keys(%{$self->{ref}})); } sub each { my $self=shift; my @l=%{$self->{ref}}; @l=splice(@l,$self->{ref},2); $self->{ref}+=2; return @l; } sub get { my $self=shift; my $key=shift; return $sef->{ref]->{$key}; } sub set { my $self=shift; my $key=shift; my $value=shift; $sef->{ref]->{$key}=$value; } sub exists { my $self=shift; my $key=shift; return exists($sef->{ref]->{$key}); } sub type { return 'HASH'; } 1;