読者です 読者をやめる 読者になる 読者になる

動的にuse

perl

ちょっと調べてみたけれど、現状すっきりしているのは以下かなぁ?

$ cat dyn_use.pl

use Data::Dumper;

my $pkg = "CGI";
eval "use $pkg;";
my $obj = $pkg->new;
print Dumper $obj;

これで

$ perl dyn_use.pl
$VAR1 = bless( {
                 '.parameters' => [],
                 'use_tempfile' => 1,
                 '.charset' => 'ISO-8859-1',
                 '.fieldnames' => {},
                 'escape' => 1
               }, 'CGI' );

ラクダ本みてシンボルテーブルをいじれば良いのかと思ったんだけど、力不足からか失敗。
main::CGIに展開されているから、近いような気がしているんだけども、それ以前にシンボルテーブルの理解があやふやなんだよなぁ…

$ cat dyn_use2.pl
my $pkg = *CGI;
print "<<<$pkg>>>\n";
$ perl dyn_use2.pl
<<<*main::CGI>>>