Jak sprawdzić ilość par elementów w Perl хеше

Zadanie. W programie w języku programowania Perl jest hash. Musisz dowiedzieć się ile par wartości w nim znajduje.

Na przykład, dla tego mieszania trzeba uzyskać wartość 1:

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

A do takiego mieszania trzeba uzyskać wartość 3:

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

Rozwiązanie

Standardowe rozwiązanie tego zadania — to najpierw zobacz wszystkie klucze mieszania za pomocą keys, a potem policzyć ilość kluczy za pomocą skalarne kontekstu. Oto skrypt w całości:

▶ Run
#!/usr/bin/perl

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

my $number = scalar keys %h;

print $number;

Skrypt wyświetla liczbę 2. scalar keys %h to to samo, co scalar(keys(%h)).

Rozwiązanie to działa na wszystkich wersjach Perla. I najczęściej jest to właśnie to rozwiązanie jest najlepsze.

Rozwiązanie w nowych wersjach Perla

Począwszy od wersji Perl 5.26 ilość par wartości w хеше można uzyskać tylko za pomocą scalar %h.

I dzięki temu pojawiła się консистентность tymczasem jak uzyskać liczbę elementów w tablicy scalar @arr i jak uzyskać liczbę par wartości w хеше scalar %h. Bardzo szkoda, że takie zachowanie nie było stworzone na początku.

Jeśli użyć scalar %h w Perl wcześniej niż 5.26, to wynik tej operacji będzie dziwna śrut rodzaju 1/8. (wyjaśnienie co oznacza ten śrut). Z tego powodu bardziej niezawodnym rozwiązaniem, aby dowiedzieć się liczby par w хеше wciąż pozostaje opcja scalar keys %h.

Tematy pokrewne

Inne artykuły