I can't see any error on your code. You will have to give us more information: The remote server software, the specific error you get, your OS and SSH client name and version and the Perl and Net::SFTP::Foreign versions. I would like to see also which files are on the source directory.
Then, activate debugging on the module...
$Net::SFTP::Foreign::debug = ~(8|16|1024|2048);
... and post here the output.
Finally, in order to check Net::SFTP::Foreign errors usually you don't use status but error, though, for mput you better use the on_error callback.