Thanks. I should have said (and did in a previous incarnation of this post, lost when my work comp temporarily died!) that $p1 - 9 are parameters that are passed in to the subroutine this is in. So they're all initialized.
Maybe I should be concerned that I DIDN'T get 'uninitialized value' messages in my testing environment ...?
I'm really stumped. I have found what I thought was an obvious solution to this three times or so.
Also, if it matters, the full complaint is "Use of uninitialized value in subroutine entry at <script> <line number>".