-4

我使用 Data::Dumper 来捕获每个元素中的唯一编号。

#!perl

use warnings;
use strict;
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;

my @names = qw(A A A A B B B C D);
my %counts;
$counts{$_}++ for @names;
print Dumper (\%counts);

exit;

这是输出。

$VAR1 = {
          'A' => 4,
          'B' => 3,
          'C' => 1,
          'D' => 1
        };

如何删除每个唯一数字的标题名称以获得这种格式的输出?

$VAR1 = { 4 ,3 ,1 ,1 }
4

2 回答 2

2

假设您希望按降序排列计数,您可以使用以下命令:

printf "\$VAR1 = { %s};\n",
   join ',', 
      map "$_ ",
         sort { $b <=> $a }
            values(%counts);

相反,如果您想要按键排序的计数,

printf "\$VAR1 = { %s};\n",
   join ',', 
      map "$counts{$_} ",
         sort
            keys(%counts);

无论哪种方式,这都是一种非常奇怪的格式。方括号比大括号更有意义。

于 2019-12-02T02:38:36.783 回答
1

获得所需结果的众多方法之一

use strict;
use warnings;

use feature 'say';

my @names = qw( A A A A B B B C D );

my %counts;

$counts{$_}++ for @names;

my @values = map { $counts{$_} } sort keys %counts;

say join(',', @values);

输出

4,3,1,1
于 2019-12-02T07:36:44.797 回答