… | |
… | |
65 | |
65 | |
66 | unless (fork) { |
66 | unless (fork) { |
67 | close $TRACER_R; |
67 | close $TRACER_R; |
68 | close $TRACER_W; |
68 | close $TRACER_W; |
69 | |
69 | |
|
|
70 | my $pkg = "pkg000000"; |
|
|
71 | |
70 | unshift @INC, sub { |
72 | unshift @INC, sub { |
71 | my $dir = find_incdir $_[1] |
73 | my $dir = find_incdir $_[1] |
72 | or return; |
74 | or return; |
73 | |
75 | |
74 | syswrite $W_TRACER, "-\n$dir\n$_[1]\n"; |
76 | syswrite $W_TRACER, "-\n$dir\n$_[1]\n"; |
… | |
… | |
80 | }; |
82 | }; |
81 | |
83 | |
82 | while (<$R_TRACER>) { |
84 | while (<$R_TRACER>) { |
83 | if (/use (.*)$/) { |
85 | if (/use (.*)$/) { |
84 | my $mod = $1; |
86 | my $mod = $1; |
85 | eval "require $mod"; |
87 | my $pkg = ++$pkg; |
|
|
88 | eval "{ package $pkg; use $mod; }"; |
86 | warn "ERROR: $@ (while loading '$mod')\n" |
89 | warn "ERROR: $@ (while loading '$mod')\n" |
87 | if $@; |
90 | if $@; |
88 | } elsif (/eval (.*)$/) { |
91 | } elsif (/eval (.*)$/) { |
89 | my $eval = $1; |
92 | my $eval = $1; |
90 | eval $eval; |
93 | eval $eval; |