#!/usr/bin/perl use strict; use warnings; use Data::Dump; srand 0; my @aoa = ( [map {int rand 3} 1 .. 10], [map {int rand 6} 1 .. 10], [map {int rand 20} 1 .. 10], ); my @aof = map {{asFreq (@$_)}} @aoa; print Data::Dump::dump (\@aof); sub asFreq { my @elements = @_; my %freqs; ++$freqs{$_} for @elements; return %freqs; } #### [ { "0" => 6, "1" => 2, "2" => 2 }, { "0" => 3, "1" => 2, "2" => 2, "3" => 1, "4" => 1, "5" => 1 }, { "0" => 1, "1" => 1, "5" => 1, "11" => 1, "12" => 1, "13" => 1, "15" => 1, "17" => 1, "19" => 2 }, ]