Cómo encontrar el número mínimo de Perl matriz

La tarea. En Perl programa cuenta con una matriz de @arr (las tres primeras letras de la palabra "array"). Es necesario encontrar el mínimo número que hay en la matriz.

El mejor método para la solución de este problema es utilizar la función min de la biblioteca de List::Util. La biblioteca List::Util viene con un script de Perl, así que si usted tiene un Perl, esta biblioteca vez está disponible, además no es necesario instalar nada.

He aquí un ejemplo de un programa que busca y muestra el número mínimo de la matriz que contiene el número de:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr = (1, 2, -100, 8, 0);

print min(@arr);

El programa mostrará en pantalla el número de -100. (Este código en el navegador ).

Cuando se conecta la biblioteca de nosotros indicamos que vamos a usar la función de min: use List::Util qw(min);. Si sólo tiene que conectar la biblioteca use List::Util;, el programa generará un error de Undefined subroutine &main::min called at script.pl line 7..

En la matriz de ninguno de los elementos

En el caso de que en la matriz de ninguno de los elementos, lo min devolverá undef. He aquí un ejemplo de programa que da cuenta de un caso:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr;

my $min = min(@arr);

if (defined $min) {
    print $min;
} else {
    print "Empty array";
}

En este programa nos reservamos el resultado de la función min en la variable, si el resultado no undef, entonces llegamos a este resultado, si undef, se muestra el texto en la pantalla.

Aquí comprobamos el resultado de la operación de la función de min, pero se podría saber el número de elementos en la matriz y si el número de elementos 0, para cumplir lo que debe hacer en caso de vacío de la matriz.

El trabajo en el caso en el que es un conjunto de comandos

Cuando se trabaja con la función de min de la biblioteca de List::Util hay una fineza. En realidad min no devuelve el número mínimo de la matriz, y el elemento, cuya representación en forma de número es mínimo.

He aquí un ejemplo. El resultado de la min(12, 'ABC', 44) es una cadena 'ABC'. Así ocurre debido al hecho de que el valor numérico de la cadena 'ABC' es cero, el cero es el menor valor en la matriz. El resultado de la min es un elemento cuyo valor numérico es mínimo. En este ejemplo es una cadena de 'ABC'.

Otro ejemplo. El resultado de la min(10, 7, '4H') es una cadena '4H'.

La documentación oficial

He aquí un fragmento de la salida del comando perldoc List::Util  sobre la función de min:

  min
        my $num = min @list;

    Similar to "max" but returns the entry in the list with the lowest
    numerical value. If the list is empty then "undef" is returned.

        $foo = min 1..10                # 1
        $foo = min 3,9,12               # 3
        $foo = min @bar, @baz           # whatever

Otros articulos