オブジェクト内で連想配列の値を保持したまま、
他のメソッドから呼び出す方法はないでしょうか?

ローカルの連想配列が利用したいという意味事です

sub new{
my($self) = shift;
my(%allvalue) = ("one", 1, "two", 2, "three", 3);

my($hash) = {
hid => $hid,
allvalue => %allvalue ←連想配列の受け渡しが出来ていない???
};
bless $hash, $self;
}

sub read{
my($self) = shift;
my(%allvalue) = $self->{allvalue}; ←%allvalue には先頭の値しか残っていない
}