Como descobrir o número de pares de elementos em Perl хеше

Tarefa. Em um programa na linguagem de programação Perl de hash. Precisa descobrir quantos pares de valores nele está.

Por exemplo, para esse tipo de hash deve obter o valor de 1:

my %h = (
    a => 'AAA',
);

E para este hash deve obter o valor de 3:

my %h = (
    a => 'AAA',
    b => 'BBB',
    c => 'CCC',
);

Solução

O padrão de solução para este problema é o primeiro a receber todas as chaves de hash usando keys, e então contar o número de chaves utilizando o escalar de contexto. Aqui está um script completo:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 'AAA',
    b => 'BBB',
);

my $number = scalar keys %h;

print $number;

O script irá imprimir na tela o número de 2. scalar keys %h é a mesma coisa que scalar(keys(%h)).

Esta solução funciona em todas as versões do Perl. E mais frequentemente do que esta solução é a melhor.

A solução em novas versões do Perl

A partir da versão Perl 5.26 o número de pares de valores em хеше pode-se obter apenas através de scalar %h.

E graças a isso, surgiu a coerência entre o modo como obter o número de elementos na matriz scalar @arr e como obter o número de pares de valores em хеше scalar %h. É uma pena que esse comportamento não foi criado originalmente.

Se usar scalar %h em Perl, mais cedo do que 5.26, o resultado desta operação será estranha a fração tipo de 1/8. (explicação do que significa esta fração). Devido a isso, mais uma opção segura para descobrir o número de casais no хеше ainda a opção de scalar keys %h.

Temas relacionados

Outros artigos