use Algorithm::Loops qw( NextPermute ); sub mysort { my @a = @_; 1 while NextPermute(@a); return @a; } my @unsorted = qw( a c b d ); my @sorted = mysort(@unsorted); print("@sorted\n");