Perl笔记:Perl语言入门(第六版) - 切片、捕获错误
来源:互联网 发布:hadoop书籍推荐 知乎 编辑:程序博客网 时间:2024/04/27 17:05
切片
列表切片
my $mtime = (stat $some_file)[9]; #圆括号不能省略
my ($card_num, $count) = (split /:/)[1, 5]; #一次取出多个值,下标可以使用负值,顺序可以是任意的,可以重复。
数组切片
数组切片的圆括号可以省略
my @numbers = @names[ 9, 0, 2, 1, 0];
切片可以直接内插到字符串中。
哈希切片
my @three_scores = @score{ qw/ barney fred dino/ };
捕获错误
eval
捕获代码运行时,可能出现的严重错误。 eval { $barney = $fred / $dino }; #结尾有分号,eval是表达式。
eval的返回值就是语句块中最后一条表达式的执行结果。
上述变形后的写法:
my $barney = eval { $fred / $dino };
$barney变量位于eval外部,便于后续处理。
捕获到错误时,返回undef,故可用定义或操作符对变量设定默认值。返回的错误消息在$@中。
如果测试的部分没有有意义的返回值,需要构造有返回值的代码块
unless ( eval { some_sub(); 1} ) { #出现错误最后一句代码不会执行。
print "I couldn't divide by \$dino: $@ if $@;
}
列表上下文,eval捕获错误,返回空列表。
eval块也可以设定词法变量的作用域,并且块内的语句数目不限。
eval可以嵌套。
grep筛选列表
my @odd_numbers = grep { $_ % 2 } 1..1000; #第一个参数是代码块(如正则表达式),以$_为列表元素返回布尔值,第二个参数为待筛选的列表。
map对列表元素变形
my @format_data = map { &big_money($_) } @data;
参数和grep类似,但代码块返回的是实际的计算结果,最终返回一系列被处理的结果。而且map的表达式在列表上下文中求值,可以返回多个元素。
- Perl笔记:Perl语言入门(第六版) - 切片、捕获错误
- Perl笔记:Perl语言入门(第六版) - 数据类型
- Perl笔记:Perl语言入门(第六版) - 控制结构、子程序
- Perl笔记:Perl语言入门(第六版) - IO文件目录
- Perl笔记:Perl语言入门(第六版) - 正则表达式、字符串
- Perl笔记:Perl语言入门(第六版) - 智能匹配、given-when
- Perl语言入门(第六版)(影印版)
- perl语言入门笔记
- perl语言入门笔记
- Perl语言入门笔记 第六章 哈希(hash)
- Learning Perl(Perl语言入门)学习笔记(1)
- Perl语言入门笔记 第十一章 perl模块
- perl入门笔记(四)
- perl入门笔记(七)
- perl语言入门学习笔记-qiu48com
- Perl语言入门笔记 第四章 子程序
- perl语言入门
- 《Perl语言入门》 读书笔记
- ubuntu12.04英文版安装中文输入法
- Understanding a Kernel Oops
- Meclispse 相关配置
- linux使用samba共享文件夹
- Google java 编程规范
- Perl笔记:Perl语言入门(第六版) - 切片、捕获错误
- 深入淺出中国剩余定理【轉】
- 辞典
- 不断更新)每个程序员都应该知道的那些事儿
- 2013年—发展的一年
- 【js学习笔记-088】--------其它文档特性
- c#Task多核编程
- siteapp–让独立博客变成手机app
- 火山旅 (易經大意 韓長庚)