… | |
… | |
987 | my $base = $1; |
987 | my $base = $1; |
988 | my $pkg = $1; |
988 | my $pkg = $1; |
989 | $pkg =~ s/[^[:word:]]/_/g; |
989 | $pkg =~ s/[^[:word:]]/_/g; |
990 | $pkg = "ext::$pkg"; |
990 | $pkg = "ext::$pkg"; |
991 | |
991 | |
992 | warn "loading '$path' into '$pkg'\n"; |
992 | warn "... loading '$path' into '$pkg'\n"; |
993 | |
993 | |
994 | open my $fh, "<:utf8", $path |
994 | open my $fh, "<:utf8", $path |
995 | or die "$path: $!"; |
995 | or die "$path: $!"; |
996 | |
996 | |
997 | my $source = |
997 | my $source = |
… | |
… | |
2314 | warn "remove ext commands"; |
2314 | warn "remove ext commands"; |
2315 | %EXTCMD = (); |
2315 | %EXTCMD = (); |
2316 | |
2316 | |
2317 | warn "unload/nuke all extensions"; |
2317 | warn "unload/nuke all extensions"; |
2318 | for my $pkg (@EXTS) { |
2318 | for my $pkg (@EXTS) { |
2319 | warn "unloading <$pkg>"; |
2319 | warn "... unloading $pkg"; |
2320 | |
2320 | |
2321 | if (my $cb = $pkg->can ("unload")) { |
2321 | if (my $cb = $pkg->can ("unload")) { |
2322 | eval { |
2322 | eval { |
2323 | $cb->($pkg); |
2323 | $cb->($pkg); |
2324 | 1 |
2324 | 1 |
2325 | } or warn "$pkg unloaded, but with errors: $@"; |
2325 | } or warn "$pkg unloaded, but with errors: $@"; |
2326 | } |
2326 | } |
2327 | |
2327 | |
|
|
2328 | warn "... nuking $pkg"; |
2328 | Symbol::delete_package $pkg; |
2329 | Symbol::delete_package $pkg; |
2329 | } |
2330 | } |
2330 | |
2331 | |
2331 | warn "unload all perl modules loaded from $LIBDIR"; |
2332 | warn "unload all perl modules loaded from $LIBDIR"; |
2332 | while (my ($k, $v) = each %INC) { |
2333 | while (my ($k, $v) = each %INC) { |