免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3718 | 回复: 16

scalar 问题 百年一遇 [复制链接]

论坛徽章:
0
发表于 2009-11-12 16:09 |显示全部楼层
10可用积分
#!/usr/bin/perl
$a="ES事业部/PA处/(ProductAssurance)QSMC研发工程部";
$b="ES事业部/PA处/(ProductAssurance)QSMC研发工程部";
$c=scalar(grep(/^$b$/,$a))

print $c


输出的值 竟然是 0   我要疯了  我现在的输出里  就会有 重复的 "ES事业部/PA处/(ProductAssurance)QSMC研发工程部"   怎么办啊



scalar(grep(/^$b$/,@newdata))>0  改成 >=  问题就更多了 该有的也没了


老大们帮我

论坛徽章:
0
发表于 2009-11-12 16:21 |显示全部楼层

回复 #1 wdl111 的帖子

没看懂你干什么 ?
改为这个试试也
$c=scalar(grep(/^$\Qb\E$/,$a))

不知道是不是你想要的

论坛徽章:
0
发表于 2009-11-12 16:26 |显示全部楼层
我要 通过  这个判断  是否 变量内 存在  相同的字段  一般相同的话  输出  都>0  但是这个却等于0



这样的话  程序就认为这句话 在 数组里不存在  就会去插入   明白了吗

论坛徽章:
0
发表于 2009-11-12 16:34 |显示全部楼层
举个列子   

数组  a    数组  b      现在要把  数组b内的数据插入  数组a     但是 如果 a内 已经有了 就不插入



我用了 scalar(grep(/^$b$/,@a))>0    这个做判断条件  ,但是  问题 出来   


a  内  有 ES事业部/PA处/(ProductAssurance)QSMC研发工程部

b 内  也有  ES事业部/PA处/(ProductAssurance)QSMC研发工程部


但是  scalar(grep(/^$b$/,@a))  得出的值  为 0   这样  ES事业部/PA处/(ProductAssurance)QSMC研发工程部  就会被插入a



老大们 看到了  帮我想办法啊

论坛徽章:
0
发表于 2009-11-12 16:38 |显示全部楼层
这关scalar啥事?
明显就是中文匹配的有问题,你既然这么写直接用eq比较不好吗?

论坛徽章:
0
发表于 2009-11-12 16:42 |显示全部楼层

回复 #4 wdl111 的帖子

我给你的,你试试吧


不好意思  写错了

$c=scalar(grep(/^\Q$b\E$/,$a))

[ 本帖最后由 linuxty 于 2009-11-12 17:12 编辑 ]

论坛徽章:
0
发表于 2009-11-12 17:12 |显示全部楼层
跟你说过,让你用 encode/decode ,你咋就不听话乜?

论坛徽章:
0
发表于 2009-11-12 17:15 |显示全部楼层
原帖由 wdl111 于 2009-11-12 16:09 发表
#!/usr/bin/perl
$a="ES事业部/PA处/(ProductAssurance)QSMC研发工程部";
$b="ES事业部/PA处/(ProductAssurance)QSMC研发工程部";
$c=scalar(grep(/^$b$/,$a))

print $c


输出的值 竟然是 0   我要疯 ...


Hi,

your problem is  simple.
the pattern string contains "()" which used as pattern place holder in regex.
try this: using qr // operater to escape special char !!!
C:\>perl -e "$x='foo/bar(x)y';$y='foo/bar(x)y';$x=qr{$x};$z=scalar(grep $x, $y);print $z"
1

论坛徽章:
0
发表于 2009-11-12 17:18 |显示全部楼层

回复 #7 cobrawgl 的帖子

觉得跟编码没关系吧
他这点应该是正则的时候 () 没有转义吧

论坛徽章:
0
发表于 2009-11-12 17:22 |显示全部楼层
用eq就可以了
my $c = grep {$_ eq $a} ($b)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP