语法
map {BLOCK} @list;
map EXPR , @list;
功能
遍历@list,对@list中的每个元素调用BLOCK或进行EXPR测试。并返回一个列表,列表中的元素是BLOCK的返回值或EXPR测试的结果。在标题上下文件中返回的是列表中元素的个数。
注:@list中的每个元素可能会在结果列表中产生0个、一个、或多个元素。
例子
一、 将数字列表转换为相应的字符列表
my @chars = map(chr,@numbers);
二、 对数字列表中的每个元素计算平方,返回平方值的列表
my @quares = map {$_ * $_ } @numbers;
三、返回满足条件的数字的列表
my @numbers = map { $_ > 5 ? $_ : ()} @numbers;
注意
- 在BLOCK中$_ 是列表元素的别名,因为可以修改原列表的中元素的值。
- 如果列表中的元素不是变量,而在BLOCK中修改了$_的值,将会产生不可预料的结果。