in reply to Quicksort trubbles.

You have two problems.

Replace my @less, @equal, @greater, @answer;

with

my @less; my @equal; my @greater; my @answer;

Replace unshift(@answer, @equals);

with    unshift(@answer, @equal);

That will result in a decreasing sort being returned.

I suggest you religiously specify use strict;. The problems were trivial to fix because they were specifically reported.