I've had another dumbass episode, and even doubly so today because Ziggy told me to stop working (and get some sleep) or I was going to make a dumbass mistake. And so it came to pass.
I've been working on my laptop, which is fine and dandy. Everything was working really nice and I was ready to deploy the script. I had tested it and everything.
Once I deployed, minor bits and pieces stopped working. Template was acting oddly, and Business::OnlinePayment::AuthorizeNet was silently failing. Everything worked on my side. I didn't get errors on the remote side: I just got odd behviour.
Three hours later (well, I was watching "The Office" special at the same time).
What I hadn't done, however, was check the version numbers on the modules on the remote machines. I took it for granted that they were up-to-date because they usually are up-to-date.
It turns out the remote side as an old version (2.09, 1.5 years old) of Template, so it doesn't understand "IN", and the old version (3.12, two years old) of Business::OnlinePayment::AuthorizeNet doesn't understand transaction keys. Luckily, the Changes files (T, B::O::A) for these modules note when the features were added, and my problems have notes between the latest versions and the ones I actually have on the remote machines.
Of course, I installed that latest versions in my private directory and sent a nice note asking for modern versions of the modules, but I'm still a dumbass.
Now if I can just figure out why gpg insists on using temporary files.