免费注册 查看新帖 |

Chinaunix

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

【求助】【还是关于匹配的问题】【搞定】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-31 18:01 |只看该作者 |倒序浏览
设计的意图就是把从son文件中读出的内容和dad文件做比较,如果在dad文件中找到匹配的项目,就print出来。
代码如下:
use warnings;
use IO;
$dadfile=shift;
$sonfile=shift;
open (DADFILE,$dadfile) or die "cannot open $dadfile, due to: $!";
open (SONFILE,$sonfile) or die "cannot open $sonfile, due to: $!";

while (<SONFILE> {
        $sontemp=$_;
    while (<DADFILE> {
                $dadtemp=$_;
                   if ($dadtemp =~ /\Q$sontemp/) {
                        print "\$dadtemp is $dadtemp\n";
                        print "\$sontemp is $sontemp\n";
                }
        }
        close(DADFILE);
        open (DADFILE,$mofile) or die "cannot open $mofile, due to: $!";
}

close (MOFILE);
close (USERSFILE);


现在的问题是这样的。
如果匹配项目是 纯数字 oK 没有问题,可以得到正确结果。

但是如果匹配项目是字符串,例如这样的 lhXmH4DgN5k
euamSNPyhjj
qtNM*B1WYaj

那么只会匹配sonfile中的最后一行qtNM*B1WYaj。

那位高手知道为什么?
为什么只匹配最后一行?

论坛徽章:
0
2 [报告]
发表于 2005-03-31 18:03 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

lhXmH4DgN5k

euamSNPyhjj

qtNM*B1WYaj
$dadtemp is 1 2005-03-17 14:07:10+08 qtNM*B1WYaj

$sontemp is qtNM*B1WYaj

输出的结果,只是截取了最后几行。

论坛徽章:
0
3 [报告]
发表于 2005-03-31 18:41 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

if ($dadtemp =~ /^\Q$sontemp$/)

论坛徽章:
0
4 [报告]
发表于 2005-03-31 18:49 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

谢谢
if ($dadtemp =~ /^\Q$sontemp$/)
这么做,反倒是不匹配了。

论坛徽章:
0
5 [报告]
发表于 2005-03-31 19:00 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

if you mean absolute equals
you can write
if ($dadtemp eq $sontemp)

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-04-01 08:23 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

你應該要先把\n給chomp掉.....
再來做比較...

论坛徽章:
0
7 [报告]
发表于 2005-04-01 11:18 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

好像加上chomp也不行,也不匹配

to suse2005
In sonfile, there is a row. In dadfile, many row.

论坛徽章:
0
8 [报告]
发表于 2005-04-01 11:34 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

sonfile 的内容
gmH5GfGN0wn
lhXm**DgN5k
euamSNPyhjj
qtNM*B1WYaj

dadfile内容
1 2005-03-17 14:05:31+08 qTzxI0n0BEd
1 2005-03-17 14:06:11+08 nWLstbJ#RTo
1 2005-03-17 14:06:21+08 5ys5iG8gm2c
1 2005-03-17 14:06:36+08 lhXm**DgN5k
1 2005-03-17 14:06:48+08 kjE9j6U0ZYd
1 2005-03-17 14:06:51+08 nWLstbJ#RTo
1 2005-03-17 14:07:07+08 twjAkRRHujb
1 2005-03-17 14:07:10+08 qtNM*B1WYaj

论坛徽章:
0
9 [报告]
发表于 2005-04-01 11:35 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

要做的就是从dadfile中找出和sonfile中匹配的行。

论坛徽章:
0
10 [报告]
发表于 2005-04-01 11:41 |只看该作者

【求助】【还是关于匹配的问题】【搞定】

搞定了,还是apile老大说的对
用chomp函数去掉每行的尾端就可以了。

谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP