Perl笔记:Perl语言入门(第六版) - 智能匹配、given-when
来源:互联网 发布:mysql offset查询优化 编辑:程序博客网 时间:2024/03/28 19:44
智能匹配
智能匹配操作符~~
use 5.010001; #至少是5.10.1版
会根据两边的操作数的数据类型自动判断该用何种方式进行比较或匹配。
查找匹配的哈希键
use 5.010001;
say "I found a key matching 'Fred'" if %names ~~ /Fred/;
对于哈希和正则表达式,智能匹配遍历哈希所有键,用给定的正则表达式逐个测试,找到匹配的键,就返回真。
比较两个数组
say "The arrays have the same elements!" if @names1 ~~ @names2;
检查标量是否在数组中
say "yes" if $value ~~ @nums;
智能匹配对两边的操作数的顺序一般没有要求[ if @nums ~~ $value ]。
智能匹配操作的优先级
%a ~~ %b 哈希的键是否一致
%a ~~ @b 哈希至少一个键在列表中
%a ~~ /Fred/ 至少一个键匹配给定模式
'Fred' ~~ %a 是否存在$a{Fred}
@a ~~ @b 数组是否相同
@a ~~ /Fred/ 数组中至少一个元素匹配模式
$name ~~ undef $name $name没有定义
$name ~~ /Fred/ 模式匹配
123 ~~ '123.0' 数值和“numish”类型的字符串是否相等
'Fred' ~~ 'Fred' 字符串是否相同
123 ~~ 456 数值是否相等
不满足匹配项顺序无关的例子
say "match number ~~ string" if 4 ~~ '4abc';
say "match string ~~ number" if '4abc' ~~ 4;
输出:match string ~~ number。
given语句
given-when控制结构类似C语音的switch。
use 5.010001;
given ( $ARGV[0] ) {
when ( 'Fred' ) { say 'Name is Fred' }
when ( /fred/i ) {say 'Name has fred in it'}
when ( /\AFred/ ) {say 'Name starts with Fred'}
default {say "I don't see a Fred"}
}
given会将参数化名为$_,每个when都尝试智能匹配$_。
可以在when语句块末尾使用continue,Perl会尝试执行下一条的when语句,在条件满足时执行对于语句块。
笨拙匹配
given-when语句中也可以使用普通的比较或匹配,也可以和智能匹配混用。
否定的表达式,包括否定的正则表达式,都不会使用智能匹配。
多个条目的when匹配
when可以和foreach配合使用
foreach ( @names ) { #不要使用具名控制变量
say "\nProcessing $_";
when ( /fred/i ) {say 'Name has fred in it'; continue}
when ( /\AFred/ ) {say 'Name starts with Fred'; continue}
when ( 'Fred' ) { say 'Name is Fred'; }
say "Moving on to default...";
default {say "I don't see a Fred"}
}
- Perl笔记:Perl语言入门(第六版) - 智能匹配、given-when
- Perl语言入门(第五版) 读书笔记(九)---智能匹配与given-when结构
- Perl语言入门笔记 第十五章 智能匹配与given-when结构
- Perl 学习笔记(10)-- 智能匹配和given-when
- Perl笔记:Perl语言入门(第六版) - 数据类型
- Perl语言入门——智能匹配与given-wh…
- Perl笔记:13、智能匹配与given-whe…
- Perl笔记:Perl语言入门(第六版) - 控制结构、子程序
- Perl笔记:Perl语言入门(第六版) - IO文件目录
- Perl笔记:Perl语言入门(第六版) - 正则表达式、字符串
- Perl笔记:Perl语言入门(第六版) - 切片、捕获错误
- Perl语言学习笔记 15 智能匹配与give-when结构
- Perl语言入门(第六版)(影印版)
- perl语言入门笔记
- perl语言入门笔记
- Perl语言入门笔记 第六章 哈希(hash)
- Learning Perl(Perl语言入门)学习笔记(1)
- perl 5 智能匹配
- 更改Linux中文件(夹)所属的用户及组
- VC中创建多个线程的方法
- Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
- 一个故事告诉你比特币的原理及运作机制
- postfix安装与配置
- Perl笔记:Perl语言入门(第六版) - 智能匹配、given-when
- 看完别人的文章想哭,看到底下的留言更想哭,咋能如此相似
- [DP]HOJ 1316Human Gene Functions
- C#之重构与重载
- RESTful架构风格
- Spring MVC获取客户端传给的json数据
- 【设计模式-外观模式】facade模式
- POJ 1743 后缀数组+分组二分
- 使用share SDK实现人人网授权登录分享(1.x版本)