Thanks everyone. I discovered that perl wasn't reading the keys at all, due to the fact that the SSH config file is located under /opt/ssh/etc on unix (my machine) as opposed to the expected /etc... directory that Net::SFTP looks for. I simply copied the /opt/ssh/etc/ssh_config file to ~/.ssh and uncommented the IdentityFile line with ~/.ssh/id_rsa and all works!
Comment on Re: Net::SFTP permission denied but sftp works