while ステートメント中に要素を配列にプッシュしています。各要素は教師の名前です。ループが終了すると、配列内に教師名が重複することになります。配列内で互いに隣り合っていない場合もあれば、隣り合っている場合もあります。
値がプッシュされた後、その配列内の一意の値のみを出力するにはどうすればよいですか? 要素を印刷するたびに配列全体を解析する必要はありません。
すべてが配列にプッシュされた後のコードは次のとおりです。
$faculty_len = @faculty;
$i=0;
while ($i != $faculty_len)
{
printf $fh '"'.$faculty[$i].'"';
$i++;
}