Perl 学习笔记(10)-- 智能匹配和given-when

原创 2012年03月22日 23:36:44

智能匹配

  • 智能匹配符~~,是一种根据要匹配(比较,判断)的上下文进行自动功能选择的一个很灵活的操作符,它在不同的上下文环境中有着不同的作用。
    • %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' 数字和字符串看起来是否相等
    • 'Fred' ~~ 'Fred‘ 字符串是否完全相同
    • 123 ~~ 456 是否大小相等

given-when

  • 根据given的参数,执行模个when条件下的对应语句块。这是对应C中switch case的perl版。
    given($argv[0]) { when (/Fred/i) {say "Name has fred in it !|} when (/^Fred/) {say "Name start with Fred !|} when ('Fred') {say "Name is Fred !|} default { say "I don't see Fred!"} }
  • given-when默认在执行完when子句后,会跳出不再匹配后面的when条件。如果要继续执行后面的语句则在when子句中加入continue;
  • given-when在when子句进行匹配时,默认使用的是只能匹配。when的匹配方法还可以是一个返回值为真假的函数
  • 当需要对多个项目进行匹配的时候可以用foreach+when的方式进行:
    foreach(@names])
    {
        when (/Fred/i) {say "Name has fred in it !|; continue;}
        when ($_ ~= /^Fred/) {say "Name start with Fred !|; continue;}
        when ('Fred') {say "Name is Fred !|; }
       default { say "I don't see Fred!";}
    }

相关文章推荐

Perl笔记:Perl语言入门(第六版) - 智能匹配、given-when

智能匹配 智能匹配操作符~~ use 5.010001; #至少是5.10.1版 会根据两边的操作数的数据类型自动判断该用何种方式进行比较或匹配。 查找匹配的哈希键 use 5....

perl 5.10后的新特征 given-when介绍

perl 5.10后的新特征 given-when介绍

perl模式匹配学习笔记

优先级 1.在此优先级表的最顶端是括号:(()),在分组和引用内存值的时候使用。括号内部的任何部分比括号外的部分结合更紧 密。 2.第二级是数量词。这里有星号(*), 加号(+),问号(?)...

[MySQL学习笔记]case when then else end用法

Case具有两种格式。简单Case函数和Case搜索函数。 (1)简单Case函数 CASE sex         WHEN '1' THEN '男'         WHEN '2' THEN ...

Erlang学习笔记(5) -- 断言, when / case of / if

学习用的书籍是这个 http://book.douban.com/subject/3260311/断言: 将断言分开的逗号(,)表示and(与)操作; 将断言分开的分号(;)表示or(或)操作。...

学习笔记:relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;

解决多个.a静态库,链接成一个.so动态库出现:  relocation R_X86_64_32 against `.rodata' can not be used when making a...

perl 5.10新特性智能匹配操作符合~~介绍

~~ 操作符号的 使用。

perl学习笔记

  • 2015年01月30日 16:14
  • 218KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Perl 学习笔记(10)-- 智能匹配和given-when
举报原因:
原因补充:

(最多只允许输入30个字)