|Don't ask to ask, just ask|
Create a patch set and backward compatability are the two major things I would advise.
If your version is radically different from the current version of the module the likely hood of getting a feature included is minimal. If the current fuctionality is just plain wrong thats a bug and can be explained as such.
If you need behavior that is different from the current module then provide a way of switching it on and off. The default should be off for compatibility but with time this may change.
Provide a patch set against a specified version of the module. This allows the maintainer to easily evaluate what you have done and how it effects everything else. Including it in a open location, developer mailing list etc will allow other people to evaluate your changes and make suggestions even if the change isn't accepted.
Take the GP example. This was just a straight bug report not a bug fix. These will often get rejected as being irritations unless they are genuine issues in the majority case.
My personal opinion is the likely hood of the request being dealt with would have been better if a patch like the below snipet had been included.
Hope it help
On a train in the middle of nowhere
Note: code unchecked
In reply to Re^2: CPAN Author Struggle: Am I a jerk? (unter-jerk)