同样道理,使用List::Util模块提供的min子程序,可求最小值:
use List::Util qw(min);
my $min = min(2, 3, 8, 5, 10); #最小值为2
【例04】对一组字符串进行排序
如果用常规方法的话,必须按顺序一个个进行比较,用List::Util的maxstr子程序可以轻松实现:
use List::Util qw(maxstr);
my $max_str = maxstr( qw/Jerry Betty Alice Fred Barney jerry/ );
print $max_str;
【例05】对列表中的元素随机排序
如果用常规方法的话,很难实现,而用List::Util中的shuffle子程序,则非常简单,一条命令搞定!
use List::Util qw(shuffle);
my @shuffled_nums = shuffle(1..10); # 3 9 8 5 6 4 1 10 2 7
my @shuffled_name = shuffle('A'..'G');# F E G A B D
【例06】检查列表中是否没有某个元素,或者有任何元素,或者所有元素都符合条件。支持类似grep语法
如果用常规方法的话,很难实现,而用List::MoreUtils同样很容易实现,
use List::MoreUtils qw(none any all);
my @numbers = qw(7 4 1 3 78);
if (none {$_ > 100} @numbers) {print "No elements over 100n"; }
elsif (any {$_ > 50}@numbers) {print "Some elements over 50n";}
elsif (all {$_ <10} @numbers) {print "All elements < 10n";}
NOTE: List::MoreUtils非自带的模块,需要下载.
【例07】同时处理多个姓名列表,每次取出2位
use List::MoreUtils qw(natatime);
my @names_1 = qw(Alice Bob Carly);
my @names_2 = qw(David Edward Foo);
my $names = natatime(2, @names_1, @names_2); #natatim (N at a time:同时处理N组)有多个列表的话往里面放就好了
while (my @name = $names->()) { #遍历,方便后面输出
print "Got @namen";
}
#输出结果
Got Alice Bob
Got Carly David
Got Edward Foo
【例08】合并多个列表为一个列表
use List::MoreUtils qw(mesh);
my @array_1 = 'A' .. 'D';
my @array_2 = 1 .. 4;
my @array_3 = qw( jerry alice wendy );
my @array_new = mesh(@array_1, @array_2, @array_3);
print @array_new;
#输出结果:
A=>1=>jerry=> B=>2=>alice=> C=>3=>wendy=> D=>4
第1次: 第一个列表中取A,第二个列表中取出1,第三个列表中取出jerry









