免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2233 | 回复: 6
打印 上一主题 下一主题

奇怪问题,大家帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-17 14:29 |只看该作者 |倒序浏览
为了找到符合想要的数据,写了个简单的脚本。
现发现不符合想要的都能打印出来。
18010001368282118401B03245041888234918066308090509064008090502225201310620121          00080A540000010000.000002.000000.000000100000055  -   -   -      919584 0STS1-XWQXAA    -              CC-                   0000.000002.000000.000000.00000000-         00025.55

想匹配那两个位置的值为919584, MCHAT

现脚本如下:
my $temp = "MCHAT";
while(<>)
{
        my $str1 = substr($_,152, 6);
        my $str2 = substr($_, 164, 5);

        if ($str1 == "919584")
        {
          print $str2, "\n";
                if ($str2 == $temp)
                {
                        print $temp,"\n";
                        print $_;
                }
                last;
        }
}


发现打印出来的是919584,-XWQX。 竟然也把上面的那行打印出来了。
真的不明白是啥回事了。

论坛徽章:
0
2 [报告]
发表于 2009-06-17 14:54 |只看该作者
我这里就打印
-XWQX
MCHAT
还有$_

论坛徽章:
0
3 [报告]
发表于 2009-06-17 14:58 |只看该作者
没看明白。。。

论坛徽章:
0
4 [报告]
发表于 2009-06-17 15:00 |只看该作者
原帖由 shaneqi 于 2009-6-17 14:54 发表
我这里就打印
-XWQX
MCHAT
还有$_


你那打印出来的MCHAT是 这里print $temp,"\n";打印的。

我的疑问是$str2 = "-XWQX" $temp = "MCHAT"
明明不等怎么会把$temp的值和$_给打印出来了。

论坛徽章:
0
5 [报告]
发表于 2009-06-17 15:12 |只看该作者

回复 #4 Cu_fans 的帖子

比较字符串要用eq或ne,你这段代码要是用use warnings,立马就报错了。

==比较的是数字,把$str2和$temp都当成0,当然就进入if语句print $temp和$_了。

BTW,个人建议无论多大代码量,一定加上use strict和use warnings,能节约很多时间

论坛徽章:
0
6 [报告]
发表于 2009-06-17 15:16 |只看该作者

回复 #4 Cu_fans 的帖子

Argument "MCHAT" isn't numeric in numeric eq (==) at C:/Documents and Settings/scnxic/workspace1/test/test1.pl line 12, <DATA> line 1.

论坛徽章:
0
7 [报告]
发表于 2009-06-17 15:50 |只看该作者
谢谢楼上的两位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP