You could, of course, put the lexical variables into the symbol table. Exporter doesn't do this, and I'm still even mostly sure that it's better that way.
Some code (and it demonstrates how import() works, too):
In test.pl:
use MyTest; print "Once-lexical variable holds $lexvar\n";
In MyTest.pm:
package MyTest; my $lexvar = 7; # This function is called automatically whenever # anyone 'use's (or 'require's, I'm pretty sure) # our module. Note that this happens at COMPILE TIME. sub import { # symbol table manipulation usually requires # the use of symbolic references... no strict 'refs'; # Figure out where to export to. # Check `perldoc -f caller` for info on caller. my $pkg_to_export_to = (caller)[0]; # Make the scalar part of the entry in the symbol # table of the calling package for 'lexvar' into a hard # reference to our lexical variable. This is called # typeglob aliasing. *{$pkg_to_export_to . '::lexvar'} = \$lexvar; }
Okay, maybe I'm just sick. ;-)
bbfu
Seasons don't fear The Reaper.
Nor do the wind, the sun, and the rain.
We can be like they are.
In reply to (bbfu) (just to confuse the issue) Re(2): use strict and exporting package variables
by bbfu
in thread use strict and exporting package variables
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |