I knew I'd seen this somewhere. Did you see this from perlintern ?
The flag SVf_PADSTALE is cleared on lexicals each time the my() is executed, and set on scope exit. This allows the 'Variable $x is not available' warning to be generated in evals, such as
I'm not sure what that means, but there is an example following the above quote that, in conjunction with your knowledge of what you are doing, may help you narrow your search.
To track it further, you might try Devel::Trace and pipe the output through grep looking for '$x':
C:\test>perl -d:Trace -E" { my $x; sub f{ eval '$x'; } } f()" >> [0] -e : 1: { my $x; sub f{ eval '$x +'; } } f() >> [0] -e : 1: { my $x; sub f{ eval '$x +'; } } f() >> [0] -e : 1: { my $x; sub f{ eval '$x +'; } } f() >> [0] -e : 1: { my $x; sub f{ eval '$x +'; } } f() >> [0] (eval 2)[-e:1] : 1: $x
I can't get their example to produce the error, but by filtering the output from D::T you ought to be able to locate the source fairly easily.
In reply to Re: Tracking down the source of a new 5.10 warning
by BrowserUk
in thread Tracking down the source of a new 5.10 warning
by mpeters
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |