my @a = qw/1 2 3 4 5 6 7......99/;

この配列の中から0以上50未満の一番大きい数値を値として持っている
のは何番目かを簡単に調べることはできますか?

sort関数はなにやらややこしいので、いまいち理解できていませんが、
やはりsort関数を使わないと難しいでしょうか?