Como encontrar o número máximo em Perl matriz

Tarefa. No Perl do programa, há uma série de @arr (para as três primeiras letras da palavra "array"). Você precisa encontrar o número máximo, que é a matriz.

A melhor maneira de resolver este problema é usar a função max a partir de uma biblioteca List::Util. A biblioteca List::Util vai junto com o Perl, o modo que se você tem um Perl, esta biblioteca está prontamente disponível, instalar nada.

Aqui está um exemplo de um programa que localiza e exibe o número máximo a partir de uma matriz que contém o número de:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

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

print max(@arr);

O programa exibirá para o número 8. (Executar este código no navegador ).

Quando você se conectar a biblioteca de nós indicamos que nós vamos utilizar a função de max: use List::Util qw(max);. Se basta ligar biblioteca use List::Util;, o programa emitirá uma mensagem de erro Undefined subroutine &main::max called at script.pl line 7..

No array não existe nenhum elemento

No caso em que a matriz não existe nenhum elemento, o max retornará undef. Aqui está um exemplo de um programa que leva em consideração o 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";
}

Neste programa, nós nos reservamos o resultado da função max em uma variável, se o resultado não undef, então a saída é o resultado, se undef, então a saída é o texto que aparece na tela.

Aqui nós testamos o resultado do trabalho da função max, mas você poderia saber o número de elementos na matriz e se a quantidade de itens 0, em seguida, executar o que devo fazer se o vazio da matriz.

O trabalho, no caso, se a matriz tem a linha

Quando se trabalha com a função de max a partir de uma biblioteca List::Util há uma sutileza. Na verdade max não retorna o número máximo de matriz e o elemento, cuja representação de um número é o máximo.

Aqui está um exemplo. O resultado max(-100, 'ABC', -4) será a linha 'ABC'. Isso ocorre devido ao fato de que o valor numérico de comando 'ABC' é zero, zero é o valor mais alto nessa matriz, será, portanto, os resultados é o elemento com o maior valor numérico. Neste exemplo, a linha de 'ABC'.

Mais um exemplo. O resultado max(1, 7, '10W') será uma seqüência de '10W'.

A documentação oficial

Aqui está um trecho da saída do comando perldoc List::Util  sobre a função 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

Outros artigos