加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl语言入门(第五版) 读书笔记(九)---智能匹配与given-when结

发布时间:2020-12-16 00:04:06 所属栏目:大数据 来源:网络整理
导读:第十五章 智能匹配与given-when结构 (use 5.010;新特性) 1. 智能匹配操作符(~~)能够根据操作数自动判断并进行操作。 2. 智能匹配操作符的优先级 ?%a ~~ %b 哈希的键是否一致 ?%a ~~ @b 至少%a中的一个键在列表@b之中 ?%a ~~ /Fred/ 至少一个键匹配给定的模式

第十五章 智能匹配与given-when结构 (use 5.010;新特性)
1. 智能匹配操作符(~~)能够根据操作数自动判断并进行操作。
2. 智能匹配操作符的优先级
?%a ~~ %b 哈希的键是否一致
?%a ~~ @b 至少%a中的一个键在列表@b之中
?%a ~~ /Fred/ 至少一个键匹配给定的模式
?%a ~~ 'Fred' 哈希中某一指定键$a{Fred}是否存在
?@a ~~ @b 数组是否相同
?@a ~~ /Fred/ 至少有一个元素匹配给定的模式
?@a ~~ 123 至少有一个元素转化为数字后是123
?@a ~~ 'Fred' 至少有一个元素转化为字符串后是'Fred'
?$name ~~ undef $name确实尚未定义
?$name ~~ /Fred/ 模式匹配
?123 ~~ '123.0' 数字和(看起来numish的)字符串是否大小相等
?/Fred/ ~~ /Fred/ 字符串是否完全相同
?123 ~~ 456 是否大小相等
?
?当使用只能匹配操作符时,Perl会按此表自上而下查看使用的操作数,先找到哪一种匹配就选择对应的操作.
?当两个标量以字符串的形式存储像'123','3.14149'这些数字的时候,使用智能匹配操作符进行比对时会默认将这些字符串转换为数字,然后在进行比对.

?say "I found Fred in the name!n" if $name ~~ /Fred/;
?say "I found a key matching 'Fred'" if %names ~~ /Fred/;
?say "The arrays have the same elementsn" if @names1 ~~ @names2;

3. given-when结构 ?类似于C语音的switch-case,但是功能比其强。 ?use 5.010; ?given( $ARGV[0] ) {? #given语句包含在foreach中时,可以省略 ??when( $_ ~~ /fred/i ) { say 'Name has fred in it'; } #可以没有continue或break ??say "Processing";? #还可以使用when以外的语句 ??when( $_ ~~ /^Fred/ ) { say 'Name starts with Fred'; continue } #continue 结束当前when,进行下一个when ??when( $_ ~~ 'Fred' ) { say 'Name is Fred'; break } # break 跳出given-when结构 ??default { say "I don't see a Fred" } ?}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读