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