在Perl中有一些专门用于处理列表数据的模块,比如说List::Util模块,该模块包含在标准库中,能提供各种高效的常见列表处理工具。因其用C语言来实现,速度一般都挺快!
【例01】扫描符合条件的某个列表,并取出第一个符合条件的
常规做法:
代码如下:
use 5.010;
my @names = qw(Wendy Jerry Betty Wendy Alice);
foreach (@names) {
if (//bWendy/b/i) {
$match = $_;
last;
}
}
say $match;
如果改用List::Util模块提供的first子程序,就要简单的多
代码如下:
use List::Util qw(first);
my $match = first {//bWendy/b/i} @names; #找到第一个Wendy即终止
如果换成数字的话,比如要求
【例02】求1到1000之间的和
常规做法:
代码如下:
use 5.010;
my $total = 0;
foreach (1..1000) {
$total += $_;
}
say $total; #结果500500
如果改用List::Util模块提供的sum子程序,同样很简单:
代码如下:
use List::Util qw(sum);
my $total = sum(1..1000); #结果500500
【例03】求一组数字的最大值与最小值.
常规做法:
代码如下:
#! /usr/bin/perl;
use utf8;
sub max {
my($max_so_far) = shift @_; #数组中第一个值,暂时当成最大值。
foreach(@_){ #遍历数组@_
if($_>$max_so_far){ #看其它元素是否有比$max_so_far大的值。
$max_so_far = $_;} #如果有话,更新最大值变量
}
$max_so_far;
}
my $_MaxData = &max(2,3,8,5,10);
print $_MaxData; #结果为10
如果改用List::Util模块提供的max子程序,则非常简单:
代码如下:
use List::Util qw(max);
my $max = max(2, 3, 8, 5, 10);
print $max; #结果为10
新闻热点
疑难解答