Just stumbled across this interesting 'strict' complaint: Let's say I want a module that has a function eval_this() which takes a snippet of code and then eval's it in the main package:
package Foo;
use strict;
sub eval_this {
my $code = shift;
$code = "package main; \n$code";
eval $code;
die ("Error: $@") if $@;
}
package main;
our $somevar = "somevalue";
Foo::eval_this('print $somevar;');
Now, as you can see,
$somevar has been declared properly as a global in
main before the function was called, but yet 'use strict' throws a fatal runtime error:
Variable "$somevar" is not imported at (eval 1) line 2.
Error: Global symbol "$somevar" requires explicit package name at (eval 1) line 2.
Is there a way around this? 'no strict "vars"' would obviously shut strict up, but I would still like strict's variable name checking. Verified with perl-5.10.0.