$forms{$name} = $val;
って感じで入れてると思うけど、簡単に書いちゃうと

if(deinfed($forms{$name}){
  $forms{$name} .= "\0" . $val;
}else{
  $forms{$name} = $val;
}

のようにして、取り出すときは

my @tmpdata = split(/\0/, $forms{'hoge'});

とすれば複数選択したデータが @tmpdata に入ります。
ただしバイナリデータに対しては有効な技じゃないし、入力されたデータに対して \0 の存在をチェックし
エスケープしてやるなどの対策も考慮してください。

バイナリデータとか不正なデータをとりあえず無視して動作を確認したいなら上記可能。 なはずです