#!/usr/bin/perl -w use strict; use Data::Dump qw(pp); my @all_arrays = ([1 .. 20], [10 .. 30], [19 .. 40], ); my %unique_descriptive; foreach my $num (map{@$_}@all_arrays) { $unique_descriptive{$num}{count}++; push @{$unique_descriptive{$num}{values}}, $num; } #print pp(\%unique_descriptive); # example for num=10 #10 => { count => 2, "values" => [10, 10] }, my @sorted_keys = sort{ $unique_descriptive{$a}{count} <=> $unique_descriptive{$b}{count} or $a <=> $b }keys %unique_descriptive; foreach my $key (@sorted_keys) { printf "%2d=", $key; #make the print out look nice print pp($unique_descriptive{$key}),"\n"; } __END__ #### 1={ count => 1, "values" => [1] } 2={ count => 1, "values" => [2] } 3={ count => 1, "values" => [3] } 4={ count => 1, "values" => [4] } 5={ count => 1, "values" => [5] } 6={ count => 1, "values" => [6] } 7={ count => 1, "values" => [7] } 8={ count => 1, "values" => [8] } 9={ count => 1, "values" => [9] } 31={ count => 1, "values" => [31] } 32={ count => 1, "values" => [32] } 33={ count => 1, "values" => [33] } 34={ count => 1, "values" => [34] } 35={ count => 1, "values" => [35] } 36={ count => 1, "values" => [36] } 37={ count => 1, "values" => [37] } 38={ count => 1, "values" => [38] } 39={ count => 1, "values" => [39] } 40={ count => 1, "values" => [40] } 10={ count => 2, "values" => [10, 10] } 11={ count => 2, "values" => [11, 11] } 12={ count => 2, "values" => [12, 12] } 13={ count => 2, "values" => [13, 13] } 14={ count => 2, "values" => [14, 14] } 15={ count => 2, "values" => [15, 15] } 16={ count => 2, "values" => [16, 16] } 17={ count => 2, "values" => [17, 17] } 18={ count => 2, "values" => [18, 18] } 21={ count => 2, "values" => [21, 21] } 22={ count => 2, "values" => [22, 22] } 23={ count => 2, "values" => [23, 23] } 24={ count => 2, "values" => [24, 24] } 25={ count => 2, "values" => [25, 25] } 26={ count => 2, "values" => [26, 26] } 27={ count => 2, "values" => [27, 27] } 28={ count => 2, "values" => [28, 28] } 29={ count => 2, "values" => [29, 29] } 30={ count => 2, "values" => [30, 30] } 19={ count => 3, "values" => [19, 19, 19] } 20={ count => 3, "values" => [20, 20, 20] } #### #!/usr/bin/perl -w use strict; use 5.010; #for new //= operator use Data::Dump qw(pp); my @all_arrays = ([1 .. 20], [10 .. 30], [19 .. 40], ); my @unique_descriptive; foreach my $num (map{@$_}@all_arrays) { $unique_descriptive[$num]++; #simple peg counter } # add a column to the 2-D array with row number # undef counts as freq of zero, the //=0 does that my $i=0; @unique_descriptive = map{[$i++,$_//=0]}@unique_descriptive; @unique_descriptive = sort{ $a->[1] <=> $b->[1] #by freq or $a->[0] <=> $b->[0] #by peg number }@unique_descriptive; foreach my $row (@unique_descriptive) { print "num = $row->[0] \tfreq=$row->[1]\n" if ($row->[1] > 0); } #### __END__ num = 1 freq=1 num = 2 freq=1 num = 3 freq=1 num = 4 freq=1 num = 5 freq=1 num = 6 freq=1 num = 7 freq=1 num = 8 freq=1 num = 9 freq=1 num = 31 freq=1 num = 32 freq=1 num = 33 freq=1 num = 34 freq=1 num = 35 freq=1 num = 36 freq=1 num = 37 freq=1 num = 38 freq=1 num = 39 freq=1 num = 40 freq=1 num = 10 freq=2 num = 11 freq=2 num = 12 freq=2 num = 13 freq=2 num = 14 freq=2 num = 15 freq=2 num = 16 freq=2 num = 17 freq=2 num = 18 freq=2 num = 21 freq=2 num = 22 freq=2 num = 23 freq=2 num = 24 freq=2 num = 25 freq=2 num = 26 freq=2 num = 27 freq=2 num = 28 freq=2 num = 29 freq=2 num = 30 freq=2 num = 19 freq=3 num = 20 freq=3