[Kc] should i submit this (or at least the lack of a warning) as a bug?

David Nicol davidnicol at gmail.com
Wed Feb 28 21:49:15 PST 2007

The situation is, that the C<use> construct does its thing inside a BEGIN
block.  There is an implied scope around a perl expression that starts "use ..."
and that can confuse things when you try to declare a lexical in the
arguments to C<use>.

This has bitten me more than once, and thre is no "lexical within implied
scope may disappear" warning when it happens, at least in 5.8.6.

David at PAPERCLIP ~/perlhacking/scopebug
$ perl -wle 'use lib "."; use SetToFour my $x; print $x'
Name "main::x" used only once: possible typo at -e line 1.
Use of uninitialized value in print at -e line 1.

David at PAPERCLIP ~/perlhacking/scopebug
$ perl -wle 'use lib ".";my $x; use SetToFour $x; print $x'

David at PAPERCLIP ~/perlhacking/scopebug
$ cat SetToFour.pm
package SetToFour;
sub import { $_[1] = 4 }
"I've never been elected dog-catcher and I've never had an employee."
-- Bruce Sterling

More information about the kc mailing list