質問します
foreach $num (0 .. $#STOCK) {
$line = $STOCK[$num];
($WORD,$PRON,$MEAN,$LVL,$CAT1,$CAT2,$YOBI1,$YOBI2,$YOBI3,$YOBI4,$YOBI5) = split(/@@@/,$line);
$line2 =$WORD.'@@@'.$CAT1.'@@@0@@@'.$CAT2.'@@@0@@@'.$YOBI1.'@@@0@@@'.$YOBI2.'@@@0@@@'.$YOBI3.'@@@0@@@'.$YOBI4.'@@@0@@@'.$YOBI5.'@@@0@@@'."\n";
#カテゴリーごとにユーザファイルを分割する
if ($CAT1 > 100 && $CAT1 < 200){push(@NLINE,$line2);}
}

@STOCKの内容を取り出して、条件に合えば、@NLINEに吐き出すのですが、
一行目が AAAAAAA だとするとちゃんとはいるのですが、2レコード目以降
BBBBBBだとすると先頭に半角の空白が入って@NLINEにはいってしまいます 具体的には

AAAAAA
BBBBBBB
CCCCCCC

です。直前(PUSHする前の)$line2のダンプを取ってみても空白は、まったくはいっていないので
pushをすると自動的に空白がはいってしまうようです。なぜでしょうか?