Hmm. I think what your saying is that the eval is necessary to avoid a warning if $var doesn't contain a value for which there is a label defined?
No, I'm saying that goto $label dies
if the label has not been defined. That is not
how it works in C. In C, if you have not provided a case
that matches your switch value, it jumps to the default case. That's why there's an eval, to prevent the die (not warning).
[sstone@granite sstone]$ perl -le 'print 1; goto "FOO"; print 2'
Can't find label FOO at -e line 1.
As far as preventing a warning on undef, well... I'd imagine that that should fit into whatever scheme you are using around undefs: warn if you have undef warnings on, else not. And there's nothing about stringifying $var that changes that semantic, so all seems well and good with my method.
Not an editor command: Wq