Come trovare il numero massimo in Perl matrice

Il compito. In Perl programma ha una matrice @arr (le prime tre lettere della parola "array"). Bisogno di trovare il numero massimo che c'è in questo array.

Il modo migliore per risolvere questo problema è utilizzare la funzione max dalla libreria List::Util. La libreria List::Util va insieme con Perl, quindi se avete Perl, questa libreria una volta disponibile, inoltre installare nulla.

Ecco un esempio di un programma che rileva e visualizza il numero massimo di un array che contiene i numeri:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

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

print max(@arr);

Il programma visualizzerà il numero 8. (Eseguire questo codice nel browser ).

Quando si collega libreria abbiamo indicato che useremo la funzione max: use List::Util qw(max);. Se basta collegare la libreria use List::Util;, il programma genera un errore Undefined subroutine &main::max called at script.pl line 7..

In un array nessun elemento

Nel caso in cui l'array non c'è nessun elemento, max restituirà undef. Ecco un esempio di programma, che considera un caso del genere:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

my @arr;

my $max = max(@arr);

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

In questo programma ci riserviamo il risultato della funzione max in una variabile, se il risultato non undef, poi ricava questo risultato, se undef, poi ricava il testo sullo schermo.

Qui, controlliamo i risultato del lavoro funzione max, ma sarebbe possibile conoscere il numero di elementi in un array e se il numero di elementi 0, eseguire ciò che è necessario fare nel caso di un array vuoto.

Lavoro nel caso in cui in un array di stringhe

Quando si lavora con la funzione di max dalla libreria List::Util è una sottigliezza. In realtà max non restituisce il numero massimo di una matrice e di un elemento, la cui prestazione in forma di numeri è il massimo.

Ecco un esempio. Il risultato max(-100, 'ABC', -4) sarà la stringa 'ABC'. Così accade che il valore numerico della riga 'ABC' è zero, zero è il più grande valore in questo array, quindi sarà ovviamente è l'elemento con il più grande valore numerico. In questo esempio, è una stringa di 'ABC'.

Ancora un esempio. Il risultato max(1, 7, '10W') sarà la stringa '10W'.

La documentazione ufficiale di

Ecco un frammento di output del comando perldoc List::Util  la funzione pro 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

Altri articoli