Yes, I considered using PAM and the associated perl modules
I discarded this approach because it seemed to be likely to introduce quite a bit of system overhead and I'm really going to be hammering it - potentially a max of 50 checks per second.
I thought a quick crypt comparison on etc/shadow would be faster and less intensive - ie load the whole file into an array and parse it with regex, etc.
I don't want to labour my cpu with password checks