>661
代入のタイミングが間違ってないか確認するべきかと。

printで文字列が出るという事は、@DATA[ $FORM{'ressno'} ]には文字列が入っているんだろう。
変数名の間違いという事もないと思われる。
しかし、
$oldDATA = @DATA[ $FORM{'ressno'} ];
この書き方では、@DATA[ $FORM{'ressno'} ]を変数でなく配列として認識してしまう為、その要素でなく要素数が返される。
だから>663の書き方のほうが正しい。
しかし、間違いの書き方でも、要素数の1が$oldDATAに入らないのはおかしい。
だとしたら考えられるのは変数の代入タイミングが間違っているか、変数のスコープの範囲外で判定しようとしてるかどっちかじゃないかと思われる。