As I look back on this, my question was confused on many levels. (grin)
In my actual code, I'm using single quotes around the XPath expr, so the @s and $s aren't an issue. (Shame on me for misstating.)
Also, I think I'm missing something about variables in XPath. For example, there is actually no "assignment" operator in the XPath 1.0 spec, so assigning to a variable like this isn't really possible. In the context of XSLT, XPath has "variables", but again, no assignment within the XPath expression.
And I guess I'm confused as to how XML::XPath::Variable is used...
Or maybe I simply have no idea what I'm talking about (quite likely ;-).
matts could explain it better, but I believe XPath variables are only included in the module for completedness sake. They are of no use outside of an XSLT context.