免费注册 查看新帖 |

Chinaunix

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

请问在m//中使用了变量内插时,如何避免变量中的通配符生效? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-21 17:08 |只看该作者 |倒序浏览
请问在m//中使用了变量内插时,如何避免变量中的通配符生效?

$ind="25*26";
if ($a=~m/Index $ind/) {...}

请问我如何让*只作为一个普通字符,而并非通配符在m//中被匹配?
(即"Index 25*26" 会被匹配,而 "Index 226" 或 "Index 255526" 都不会被匹配)

论坛徽章:
0
2 [报告]
发表于 2006-08-21 17:57 |只看该作者

  1. #! /usr/bin/perl -w
  2. #

  3. use strict;

  4. my $ind="25\\*26";
  5. my $a = "Index 2555526";

  6. if ($a =~ m/Index $ind/)
  7. {
  8.     print "find\n";
  9. }
  10. else
  11. {
  12.     print "no found\n";
  13. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2006-08-21 18:08 |只看该作者

谢谢楼上的,可我不是这个意思。。。

$ind是从一个文件中提取出来的,格式比较复杂,除了 "*" ,也有可能出现 "**" , "." , "\" , "/" 等字符,所以手工替换是不现实的
我想要一个通用的方法,使$ind中的通配符通通失效

(我试过用m''代替m//,可是这样是禁止变量内插,也就是连$ind都变成了普通字符,这样显然打击面太大了...)

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2006-08-21 18:09 |只看该作者
改成:
  1. if ($a=~m/Index \Q$ind\E/)
复制代码

论坛徽章:
0
5 [报告]
发表于 2006-08-21 18:26 |只看该作者

谢谢斑竹

谢谢斑竹
果然强
得赶紧记到我的小本子里

论坛徽章:
0
6 [报告]
发表于 2006-08-21 22:06 |只看该作者
原帖由 wangchick 于 2006-8-21 18:26 发表
谢谢斑竹
果然强
得赶紧记到我的小本子里


你把你小本本借我学习学习贝 就让我偷窥下也行 呵呵

论坛徽章:
0
7 [报告]
发表于 2006-08-22 10:59 |只看该作者
同事不管它叫“小本本”,都管它叫“葵花宝典”。。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2006-08-22 11:25 |只看该作者
原帖由 wangchick 于 2006-8-21 18:26 发表
谢谢斑竹
果然强
得赶紧记到我的小本子里

不需要记到本子里,记到脑子里就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP