If we look at the import function in strict.pm the magic is right there:
sub import { shift; $^H |= @_ ? &bits : all_bits | all_explicit_bits; }
So the only actual "payload" is that it sets bits in the global variable $^H. You can get details about that variable in perlvar: $^H and its related hash %^H.
For more normal modules that simply export functions or variables into a caller's namespace, things are less magical: they interrogate caller to work out which package they should inject into, and then use glob manipulation to do the injection. Taking the start of the code for Exporter::import, for example:
sub import { my $pkg = shift; # A my $callpkg = caller($ExportLevel); if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { # B *{$callpkg."::import"} = \&import; return; } ...
.. the use of caller() at A determines the name of the package from which it was called (or "main" if called from the top-level script). At B it injects its own import function into the caller's symbol table by assigning the coderef into the glob (in a manner that requires no strict 'refs').
In reply to Re: import() into caller
by hv
in thread import() into caller
by assist/control
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |