免费注册 查看新帖 |

Chinaunix

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

请教一个hash取值的语法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-02 17:06 |只看该作者 |倒序浏览
最近遇到一段代码,关于hash取值的问题,
  1. if (defined $Animal_Hash{Cat_Info}) {
  2.       $Animal_Hash{Cat_Info} =~ /$Animal_Regex_Hash{Cat_Info}/;
  3.       $Animal_Hash{Cat_Type}   = $2;
  4.       $Animal_Hash{Cat_Number} = $3;
  5.       if (defined $4) {
  6.          $Tmp_Cat_Animal_Number = $4;
  7.       }
  8.       if (defined $5) {
  9.          $Tmp_Cat_Animal_Name = $5;
  10.       }
  11.    }
复制代码
上面的代码是一个函数里面的,按理说,上面代码里面的$2,$3,$4,$5等,都应该是传给函数的参数.
比如函数名字是sub1,而我调用函数时给的参数是:par1, par2, par3, par4,par5。
那$2,$3,$4,$5就对应:par2, par3, par4,par5
但是从程序实际运行的情况看,他们都不是par2, par3, par4,par5。

所以想问,根据上面的代码,上面的$2,$3,$4,$5代表什么呢?是perl的什么特殊语法吗?
谢谢~~

论坛徽章:
0
2 [报告]
发表于 2011-04-02 17:16 |只看该作者
$_[1],$_[2],$_[3],$_[4]
对应第 2 3 4 5个参数

论坛徽章:
0
3 [报告]
发表于 2011-04-02 17:17 |只看该作者
还有个作用域问题得考虑

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
4 [报告]
发表于 2011-04-02 17:17 |只看该作者
$Animal_Hash{Cat_Info} =~ /$Animal_Regex_Hash{Cat_Info}/;

正则表达式捕获的内容,具体内容要看 $Animal_Regex_Hash{Cat_Info} 了

论坛徽章:
0
5 [报告]
发表于 2011-04-02 17:41 |只看该作者
$Animal_Hash{Cat_Info} =~ /$Animal_Regex_Hash{Cat_Info}/;

正则表达式捕获的内容,具体内容要看 $Ani ...
zhlong8 发表于 2011-04-02 17:17


谢谢,我大概明白了~
  1. my %Animal_Regex_Hash = ( Cat_Info   => qr/^((\w{8})\((\d+)\)\s+($String_Cat_Info_a\s+$String_Cat_Info_b?\s=?\s(\d+)|$String_Cat_Info_c=(\w+)))$/i,);
复制代码
那对于这个正则表达式抽取的域是按什么来划分的啊?

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
6 [报告]
发表于 2011-04-02 18:53 |只看该作者
括号 () ,你要是不懂这个还是先看下入门的文档,很多例外情况

论坛徽章:
0
7 [报告]
发表于 2011-04-02 22:20 |只看该作者
括号 () ,你要是不懂这个还是先看下入门的文档,很多例外情况
zhlong8 发表于 2011-04-02 18:53


是的是的,谢谢zhlong8~~我会再好好看看这一方面的东西的~
正则中的组有捕获组和非捕获组,而捕获组又分为普通的捕获组和命名捕获组,分别为
捕获组:(exp)  
命名捕获组:(?<name>exp)  
非捕获组:(?:exp)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP