Los Módulos List::Util y List::MoreUtils

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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19