#! perl -slw use strict; use Data::Dump qw[ pp ]; use List::Util qw[ reduce ]; our $N //= 1; my %byFreq = map{ int( rand 1000 ) => $_ } 'A'x$N .. 'Z'x$N; pp \%byFreq; my @tree; reduce{ $a->[0] = $byFreq{ $b }; $a->[1] = []; } \@tree, sort{ $a <=> $b } keys %byFreq; pp \@tree;