Perl List::Util模块使用实例

2019-10-01 10:30:13王振洲

在Perl中有一些专门用于处理列表数据的模块,比如说List::Util模块,该模块包含在标准库中,能提供各种高效的常见列表处理工具。因其用C语言来实现,速度一般都挺快!

【例01】扫描符合条件的某个列表,并取出第一个符合条件的
常规做法:

use 5.010; 
my @names  = qw(Wendy Jerry Betty Wendy Alice); 
foreach  (@names) { 
    if (/bWendyb/i) { 
        $match = $_; 
        last; 
    } 

say $match;     

如果改用List::Util模块提供的first子程序,就要简单的多

use List::Util qw(first); 
my $match = first {/bWendyb/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