my @data; foreach ( 1 .. 100 ) { push @data, [ map { rand(200) - 100 } 1 .. 100 ]; } my $pivot = 0; my @sorted = keysort { my $v = $_; my @v = keysort { $_ > $pivot ? 1 : -1 } @{$v}; $v[50] } @data;