sortsv(AvARRAY(data), arrayLen+1, Perl_sv_cmp); to sortsv(AvARRAY(data), arrayLen+1, numerical_cmp); ??? I32 numerical_cmp(SV* sv1,SV* sv2) { double num1; double num2; num1 = (double)*sv1; num2 = (double)*sv2; if (num1 == num2) { return 0; } else if (num1 > num2) { return 1; } else { return -1; } }