open (DAT,"<sample.txt");
@file = <DAT>;
close (DAT);
%hash;
for $i (@file){
@test = split(/[ ,\n,.,\",_,\=,;,:,(,),\',-]/,$i);
for $i (@test){
$i =~ tr/A-Z/a-z/;
$hash{"$i"} += 1;
}
}
foreach $word (sort {$hash{$b} <=> $hash{$a}} keys %hash){
print "$word $hash{$word}\n";
}

このプログラムでsample.txt内の単語の数をソートして表示するプログラムをつくっているのですが、結果に

367
the 214
in 63
is 60
of 56
and 38
god 33
to 32
that 31
…
というように「 367」という謎の単語を表示してしまいます。
どうもsplitで記号を消去するときにでてきてしまうらしいのですが、、、どうすればこの謎の記号を%hashに登録しないようできるでしょうか?数が300以上の単語は表示しないなんてプログラムではだめだと思うのでなんとかしたいです。
よろしくお願いします。