アクセスメソッド。呼び出しは
my $value = $obj->access(path1=>hoge,path2=>hogeがハッシュ、配列のリファレンスならその続きをここに,value=>代入したい値);
突っ込んでくれるとどこを改良すればいいかのめぼしがつくからうれしい。
sub access{
my $self = shift;
my %atr = (path1 => undef,path2 => undef,value=>undef,@_);
if ( !($atr{path2}) ) {
  if ( ref $self->{$atr{path1}} eq "SCALAR" ){
    if ( $atr{value} ){${$self->{$atr{path1}}} = $atr{value};}
    return ${$self->{$atr{path1}}};
  } elsif ( ref $self->{$atr{path1}} eq "ARRAY" ){
    if ( $atr{value} ){@{$self->{$atr{path1}}} = $atr{value};}
    return @{$self->{$atr{path1}}};
  } elsif ( ref $self->{$atr{path1}} eq "HASH" ){
    if ( $atr{value} ){%{$self->{$atr{path1}}} = $atr{value};}
    return %{$self->{$atr{path1}}};
  } else {
    if ( $atr{value} ){$self->{$atr{path1}} = $atr{value};}
    return $self->{$atr{path1}};
  }
} elsif ( !($atr{path3}) ) {
  if ( $atr{value} ){$self->{$atr{path1}}{$atr{path2}} = $atr{value};}
  return $self->{total}{prtotal};
}}