Hvordan til at finde det mindste antal i et Perl-array

Opgave. I Perl, programmet har en bred vifte @arr (de tre første bogstaver fra ordet "array"). Behovet for at finde det mindste antal, der er i dette array.

Den bedste måde at løse dette problem er at bruge funktionen min fra biblioteket List::Util. Bibliotek List::Util kommer med Perl, så hvis du har Perl, denne pakke er til rådighed for yderligere installere noget.

Her er et eksempel program, der finder og viser det mindste antal fra array, som indeholder de numre:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

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

print min(@arr);

Programmet vil vise antallet -100. (At udføre kode i browseren ).

Når du tilslutter et bibliotek har vi tilkendegivet, at vi vil bruge den funktion, der min: use List::Util qw(min);. Hvis du blot oprette biblioteket use List::Util;, programmet vil udstede en fejl Undefined subroutine &main::min called at script.pl line 7..

I den matrix, der ikke har nogen elementer

Hvis det array, der ikke har nogen elementer, så min vil vende tilbage undef. Her er det sample program som tager hensyn til følgende tilfælde:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr;

my $min = min(@arr);

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

I dette program kan vi gemme resultatet af funktionen min i den variabel, hvis resultatet er ikke undef, vi udlede dette resultat, hvis undef, vi udlede tekst på skærmen.

Her tjekker vi resultatet af funktionen min, men det ville være muligt at kende antallet af elementer i arrayet , og hvis antallet af elementer, der er 0, og derefter udføre, hvad du skal gøre i tilfælde af et tomt array.

Arbejde i tilfælde array har string

Når du arbejder med den funktion, der min fra biblioteket List::Util der er en underfundighed. Faktisk min ikke returnerer den mindste antal fra array, og det element, hvis vis nummer er minimal.

Her er et eksempel. Resultatet min(12, 'ABC', 44) vil line 'ABC'. Dette sker på grund af den kendsgerning, at den numeriske værdi af strengen 'ABC' er nul, nul er den mindste værdi i dette array. Resultatet min er det element, hvis numeriske værdi er minimal. I dette eksempel strengen 'ABC'.

Et andet eksempel. Resultatet min(10, 7, '4H') vil line '4H'.

Officiel dokumentation

Her er et uddrag af output perldoc List::Util  om funktionen 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

Andre artikler