关于array & hash的问题,继续求助,进展到奇怪的结果请帮助,问题解决!多谢!

发现在print hash keys的时候,如果仅仅是
@temp = keys %hash;
for (@temp){
   print "$_\n";
}

一切正常,但是如果是:
@temp = keys %hash;
for (@temp){
   print "$_", ":hi\n";   ##任何\w

}

就会输出类似:“××:hi ##××不是keys” 或者“hi×× ##××不是keys” 的东西
有没有人遇到同样的问题啊?

##程序读取的所有文件均为txt文件,并且非unicode



QUOTE:
原帖由 milkharbor 于 2007-10-15 17:58 发表
发现在print hash keys的时候,如果仅仅是
@temp = keys %hash;
for (@temp){
   print "$_\n";
}
一切正常,但是如果是:
@temp = keys %hash;
for (@temp){
   print "$_", ":hi\n";   ##任何\w

} ...

第一个方法能正确输出的话, input应该没问题.
检查下code的编码和这个呢 ":hi\n";   ##任何\w

再加上
use strict;
use warnings;
昨天根据大家的意见又试了半天,现在问题集中到%hash上了,又一段代码的结果很奇怪:
    for (keys %hash){
        if ($count++ < 10){
        my $trash = chomp($hash{$_});
        print "$trash aaa\n";
        my @try = split(//, $hash{$_});
#        print $#try, "\t@try\t";

        print "\$try[0] = $try[0]\n";
        my $str = "";
        foreach $i (0 .. $#try){

            print "$try[$i] ";
            my @inter = split(//, $try[$i]);
            print "$#inter\t";
            $str .= "$inter[0]";
        }
        print "\n$str\n";
#        print "$hash{$_}\n";

        }
    }

输出结果为(截取一个):
0 aaa
$try[0] = 6                                             ###为@try的第一项
00      3 0      9 0       6 0      9 0            ###无法显示$try[0]!!!
63969                                                    ###为$hash{$_}值

奇怪啊,有没有人遇到过类似的问题啊?
怎么越写越复杂,你干脆把txt文件给附件上来好了,一部分也好
你%hash又是咋读的,%data呢
问题解决了!呵呵

读取的文件有一部分是在windows下生成的,所以带有\r,没有chomp掉,导致了这个郁闷了我4天的问题,^_^

谢谢大家的帮助啊