sub buildtree {
my($f, @a) = @_;
local $_;
@a = ((sort $f @a), '');
$_ = join '=>[0,{', @a;
chop;
$_ = '(' . $_ . '0' . ']}' x $#a;
s/}$/)/;
eval;
}
####
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
sub buildtree {
my($f, @a) = @_;
local $_;
@a = ((sort $f @a), '');
$_ = join '=>[0,{', @a;
chop;
$_ = '(' . $_ . '0' . ']}' x $#a;
s/}$/)/;
eval;
}
my @array = ( 6, 1, 2, 3, 4, 5 );
my $func = sub($$) { $_[0] <=> $_[1] };
my %tree = buildtree( $func, @array );
print Dumper \%tree;
####
# 1 2 3 4
#23456789012345678901234567890123456789012345
my$f=shift;@_=((sort{&$f($a,$b)}@_),'');$_=
join'=>[0,{',@_;chop;%{eval"{$_ 0".']}'x$#_};