perl中的散列内的数组

Raj*_*Raj 0 perl

我如何对哈希值进行排序并将其计入相关键.

例如:push @ {$ name_hash {$ st_name}},$ end_name;

 $VAR1 = 'firstname')';
    $VAR2 = [
      'lastname1',
      'lastname1',
      'lastname1',
      'lastname2',
      'lastname2',
      'lastname2',
      'lastname3',
      'lastname3',
       ] 
Run Code Online (Sandbox Code Playgroud)

我需要表格

    `firstname : lastname1 : 3`  

    `firstname : lastname2 : 3`

    `firstname : lastname3 : 2`
Run Code Online (Sandbox Code Playgroud)

我尝试使用一些计数器,但它在启动时失败,我只有多次值或在最后一个值的末尾(在本例中为lastname3).

foreach $n (sort keys %name_hash) {
    $ecounter =0; $temp2 = "NA"; $tcount =0; $p =0;
    foreach $lastn (sort values @{$name_hash{$n}}) {
        $ecounter ++ if ($lastn eq $temp2);
        $tcount++;
        if (($tcount) > ($ecounter+1) ){
        print " $n : $temp2 : $ecounter+1\n";
        $ecounter=0; $tcount=1;
        $p =1 ;
        }
        $temp2 = $lastn ;

       }

    print "$n : $temp2 : $ecounter+1\n" if (!$p);

    }
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 5

使用哈希计算重复的名称:

#!/usr/bin/perl
use warnings;
use strict;

my %name_hash = (
    firstname => [qw[
        lastname1 lastname1 lastname1
        lastname2 lastname2 lastname2
        lastname3 lastname3 ]]);

for my $first_name (sort keys %name_hash) {
    my %count;
    ++$count{$_} for @{ $name_hash{$first_name} };
    print "$first_name : $_ : $count{$_}\n" for sort keys %count;
}
Run Code Online (Sandbox Code Playgroud)