・name.txtの中には「名前<>年齢<>性別<>電話番号<>住所」
 という情報が入っている。
・これを「住所」でソートして結果を出力(都道府県別という程度のソート)。
・その際、ブラウザにはフォームで選択した項目の情報だけを吐き出す。

ということをやりたいんですが、

1.openしてwhileで1行ずつ配列(@temp)に入れて処理。
 1-1.フォームで選択されていないものを@tempからspliceして除去。
 1-2.全ての都道府県にあらかじめ番号を付けておき、
   $temp[4]に当たる値とマッチングさせて、unshiftで@tempの頭にその番号を付ける。
 1-3.@newdataに@tempをpushで追加していく。
2.@newdataをソートして出力。

という方法しか思いつきませんでした。
でも、これだと不要な項目をループ処理の中で1回1回チェックしていて
ものすごく無駄なことをしている感じがします。
ファイルを開く前に必要な項目をチェックしておいて、
ファイルを開くときにはそれだけを取り出して処理する、
ということはできないでしょうか?