善用foreach,map 和 grep

本文介绍了Perl编程语言中如何高效地操作列表,包括只读遍历、元素内容修订、新列表创建及元素筛选的方法。通过foreach循环进行元素内容的修改,并利用map函数创建新列表,而grep则用于筛选列表元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 通过foreach来进行列表元素的只读遍历

如果是仅仅要遍历列表中的所有元素,那么foreach循环就已经足够了。

另外,所有用到foreach的地方都可以改用等价的简写名for.

2.用map函数从现有列表延展出新列表

如果是从现有列表推导出新列表,请使用map函数。

my @sizes = map {-s} @files ;
my @sizes = map -s,@files;
my @stem = map {/(.*)\.txt$/} @files
my ($from) = map /^From:\s+(.*)$/,@message_lines ;

map 在做数据转换时,返回模式匹配操作符m//内部圆括号捕获的数据。 因为这是一个列表上下文,所以m//返回要么是没有匹配的空列表,要是匹配时找到的结果集而成的列表。

出于对性能的考虑,对原始列表内容改变的话,就改用foreach 循环。

使用map操作,要明确他的意义在于返回相应的列表数据,而不是用作控制结构做一堆杂事。

3.用foreach修订列表元素的内容

如果要修改列表元素的内容,请使用foreach 循环。 和map 和 grep 一样,循环体中的控制变量其实是列表当前元素的别名。所以修改变量,实际就是修改原始数据

#移除数组中各个元素的数字
foreach (@array) {tr /0-9//d }

#使用s/// De版本,更慢一些
foreach (@array) {s/\d//g}

4. 用grep 筛选列表元素

grep 比较特别,一般用于刷选列表元素或对元素计数

grep 块的第一个参数,不管是表达式还是代码块,都是标量上下文中的。

在标量上下文中,grep 返回的是符合条件的元素的个数,而不是元素列表。

转载于:https://www.cnblogs.com/tjxwg/archive/2013/03/01/2939047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值