構造体の要素をprintで表示させたいのですがどのようにしたらよいでしょうか?

struct Person => {
 name => '$',
 son => '@',
 doughter => '@'
};

$person[$i] = Cell->new();
$person[$i]->son($j, 'taroh');
$person[$i]->doughter($k, 'hanako');
みたいにたくさんの人がいて、
人によって息子と娘の数は違います。
下の書き方だと表示できません。よろしくお願いします。

for ($i = 0; $i <= $#person; $i++){
 print $person[$i]->name;
 print ' son: ';
 for ($j = 0; $j <= $#{$person[$i]->son($j)}; $j++){ ←この行でダメと怒られる
  print $person[$i]->son($j);
 }
 print ' doughter: ';
 for ($j = 0; $j <= $#{$person[$i]->doughter($j)}; $j++){
  print $person[$i]->doughter($j);
 }
 printf "\n";
}