El módulo List::Util provee un conjunto de funciones para el manejo de listas. Veamos algunos ejemplos de uso de List::Util :
DB<1> use List::Util qw(first max maxstr min minstr reduce shuffle sum)
DB<2> @a = map { int(rand 20) } 1..5
DB<3> x @a
0 8
1 9
2 4
3 16
4 5
DB<4> x min @a
0 4
DB<5> x max @a
0 16
DB<6>x first { $_ > 8 } @a
0 9
DB<7> x sum @a
0 42
DB<8> x shuffle @a
0 8
1 5
2 16
3 4
4 9
DB<9> x reduce { $a." $b" } @a
0 '8 9 4 16 5'
Existe también un módulo List::MoreUtils que provee mas funciones para el manejo de listas. He aqui un fragmento de la sección SYNOPSIS de la documentación:
use List::MoreUtils qw(any all none notall true false firstidx first_index
lastidx last_index insert_after insert_after_string
apply after after_incl before before_incl indexes
firstval first_value lastval last_value each_array
each_arrayref pairwise natatime mesh zip uniq minmax);
Veamos algunos ejemplos de uso de List::MoreUtils :
lhp@nereida:~/Lperl/src/XSUB/h2xsexample/Coord/script$ perl -de 0
main::(-e:1): 0
DB<1> use List::MoreUtils qw(:all) # Importar todas las funciones
DB<2> @a = (1..8,-2,-3)
DB<4> print "@a" if any { $_ > 0 } @a
1 2 3 4 5 6 7 8 -2 -3
DB<5> print "@a" if all { $_ > 0 } @a
DB<6> print (false {$_ > 0} @a),"\n" # Número de elementos para los que es falsa la condición
2
DB<7> print (firstidx {$_ < 0} @a),"\n"
8
DB<8> @a = (1..3,2..5,3..6)
DB<9> x uniq(@a) # Array con los elementos distintos
0 1
1 2
2 3
3 4
4 5
5 6
DB<8> @a = 1..5; @b = 'a'..'e'; @c = 10..14
DB<9> x mesh @a, @b, @c # Mezcla los 3 arrays
0 1
1 'a'
2 10
3 2
4 'b'
5 11
6 3
7 'c'
8 12
9 4
10 'd'
11 13
12 5
13 'e'
14 14
Casiano Rodríguez León
