I guess it is a problem of many interfaces rather than packages, well said :)
One of the requirments of what am writting is that it will be as easy to go through and maintain as possible by my client, and they prefered using one package if possible as they might need to extend it to support different protocols in the future, and they would prefer not having to go through the code to create more handles of other protocols (current requirments are http, ftp, sftp).
The points made as to why one should use packages instead of resorting to system() calls are also good.
I did not realise LWP supported sftp, in which case i might as well use it instead of curl, which appears to be too big of a fuss to use right now