免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: milkharbor
打印 上一主题 下一主题

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

论坛徽章:
0
11 [报告]
发表于 2007-10-15 17:58 |只看该作者
发现在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

[ 本帖最后由 milkharbor 于 2007-10-15 18:02 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2007-10-15 19:13 |只看该作者
原帖由 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;

论坛徽章:
0
13 [报告]
发表于 2007-10-16 09:59 |只看该作者
昨天根据大家的意见又试了半天,现在问题集中到%hash上了,又一段代码的结果很奇怪:
    for (keys %hash){
&nbsp;&nbsp;&nbsp;&nbsp;    if ($count++ < 10){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $trash = chomp($hash{$_});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "$trash aaa\n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @try = split(//, $hash{$_});
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print $#try, "\t@try\t";

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

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

&nbsp;&nbsp;&nbsp;&nbsp;    }
&nbsp;&nbsp;&nbsp;&nbsp;}

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

奇怪啊,有没有人遇到过类似的问题啊?

论坛徽章:
0
14 [报告]
发表于 2007-10-16 14:02 |只看该作者
怎么越写越复杂,你干脆把txt文件给附件上来好了,一部分也好
你%hash又是咋读的,%data呢

论坛徽章:
0
15 [报告]
发表于 2007-10-16 19:44 |只看该作者
问题解决了!呵呵

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

谢谢大家的帮助啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP