#!/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__