Does it work if you change the exec to
die "Unable to exec\n" unless(exec("/usr/bin/ssh localhost /bi +n/sleep 10 </dev/null"));
die "Unable to exec\n" unless(exec("/usr/bin/ssh -n localhost +/bin/sleep 10"));
IIRC ssh may be pre-reading STDIN and then discarding the contents when it's not actually needed. Redirecting stdin for the ssh command makes sure there won't be any interference with your main program.