いや、それもう呼び出し方からしてダメだし。

$foo->hoge(
 {
  aaa => ¥@aaa,
  bbb => ¥@bbb,
  ccc => ¥@ccc
 }
);

sub hoge {
 my $self = shift;
 my $args = shift;
 $self->{aaa} = $args->{aaa};
 ・
 ・
}

まあ実際の処理ではこんな事しないと思うよ。
してたら設計ミスを疑った方が。