Cómo encontrar el número máximo en el Perl de la matriz de

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

El mejor método para la solución de este problema es utilizar la función max 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 en pantalla el número máximo de la matriz que contiene el número de:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

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

print max(@arr);

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

Cuando se conecta la biblioteca de nosotros indicamos que vamos a usar la función de max: use List::Util qw(max);. Si sólo tiene que conectar la biblioteca use List::Util;, el programa generará un error de Undefined subroutine &main::max 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 max devolverá undef. He aquí un ejemplo de programa que da cuenta de un caso:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

my @arr;

my $max = max(@arr);

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

En este programa nos reservamos el resultado de la función max 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 max, 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 max de la biblioteca de List::Util hay una fineza. En realidad max no devuelve el número máximo de la matriz, y el elemento, cuya representación en forma de número es mayor.

He aquí un ejemplo. El resultado de la max(-100, 'ABC', -4) es una cadena 'ABC'. Así ocurre debido al hecho de que el valor numérico de la cadena 'ABC' es cero, cero — es de la mayor importancia en la matriz, por lo tanto, será resultado es el elemento con mayor valor numérico. En este ejemplo es una cadena de 'ABC'.

Otro ejemplo. El resultado de la max(1, 7, '10W') es una cadena '10W'.

La documentación oficial

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

  max
        my $num = max @list;

    Returns the entry in the list with the highest numerical value. If the
    list is empty then "undef" is returned.

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

Otros articulos