Can you try install and run Net::SCP too for this same transfer ? Just to make another step to try to localize the problem.
Net::SSH2 seems to be far from mature (version 0.10), so it is definitely a suspect; however, trying Net::SCP (which is at version 0.07 :) ) might be an easier test than mucking with the Net::SSH2 code already.
A totally different - but still possible - approach would be to wrap a system() call around the command line scp that was successfull.
Hope that helps.