>>732
my @alldata;
while(<>){ # 配列ならforeach(@list){ とか
  my %tmp;
  @tmp{qw/name address age/} = split /<区切り文字>/;
  push @alldata, \%tmp;
}
@sort_by_age = sort { $a->{age} <=> $b->{age} } @alldata; # 年齢でソート

行頭のスペースは"@list"とダブルクォートで括ってるから。
配列を文字列に展開するとき$"の値を挟む。(デフォルトが半角スペース)
print OUT @list;