質問いいでしょうか
%inputhash←入力ファイルをあらかじめキー1:1列目の値,キー2:2列目以降のヘッダ名という形で生成
これをforループでキー1のレコード回(100万回)
%outputhash←%inputhashのキー2の特定ヘッダに格納されている値に応じてデータをふるいわけて格納
なおキー2の値がすでに存在している場合一旦配列待避して,新規値をpushしてjoinし再度格納
という処理を行なっていますが如何せん時間がかかります。

調べているとマルチスレッドという手法があるのを知りましたが、
今回のような入力ハッシュを各スレッドで共有させ(forループを分担させる)、
さらに共通の出力ハッシュへ格納していく(重複部分の処理でエラーを起こさないか)ということは可能でしょうか?