#!/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; }