Comment connaître le nombre de paires d'éléments en Perl hachage

De la tâche. Dans un programme en langage de programmation Perl un hash. Besoin de savoir combien de paires les valeurs s'y trouve.

Par exemple, pour cette hachage besoin d'obtenir une valeur de 1:

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

Et pour ce hachage besoin d'obtenir une valeur de 3:

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

Solution

Une solution de cette tâche est d'abord obtenir toutes les clés de hachage à l'aide de la keys, puis compter le nombre de clés à l'aide du contexte scalaire. Voici le script en entier:

▶ Run
#!/usr/bin/perl

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

my $number = scalar keys %h;

print $number;

Le script affiche le nombre de 2. scalar keys %h c'est la même chose que la scalar(keys(%h)).

Cette solution fonctionne sur toutes les versions de Perl. Et le plus souvent c'est cette solution est la meilleure.

Solution dans les nouvelles versions de Perl

À partir de la version de Perl 5.26 le nombre de paires de valeurs dans le hachage peut accéder simplement à l'aide de scalar %h.

Et grâce à cela il y avait une cohérence entre comment obtenir le nombre d'éléments dans le tableau scalar @arr et comment obtenir le nombre de paires de valeurs dans le hachage scalar %h. Très dommage qu'un tel comportement n'a pas été créé à l'origine.

Si l'utilisation de scalar %h en Perl avant 5.26, le résultat de cette opération sera étrange de la fraction des espèces 1/8. (l'explication de ce que signifie cette fraction). En raison de cette option la plus sûre pour élucider le nombre de couples dans le hachage est encore une option scalar keys %h.

Thèmes connexes

Autres articles