Show
Ignore:
Timestamp:
04/03/08 05:48:47 (9 months ago)
Author:
yappo
Message:

lang/perl/Class-Component: Class::Inspector のキャッシュも掃除させる

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Class-Component/trunk/lib/Class/Component.pm

    r8694 r8703  
    4444    for my $key (keys %{ $isa_list }) { 
    4545        delete $isa_list->{$key} if $key =~ /^$klass-/ || $key eq $klass; 
     46    } 
     47 
     48    my $pkg_require_cache = Class::Component::Implement->pkg_require_cache; 
     49    for my $key (keys %{ $pkg_require_cache }) { 
     50        delete $pkg_require_cache->{$key} if $key =~ /^$klass\::/ || $key eq $klass; 
    4651    } 
    4752} 
     
    378383} 
    379384 
    380 my %pkg_require_cache = (); 
    381 sub pkg_require_cache_clear { %pkg_require_cache = () } 
     385my $pkg_require_cache = {}; 
     386sub pkg_require_cache { $pkg_require_cache } 
     387sub pkg_require_cache_clear { $pkg_require_cache = {} } 
    382388sub pkg_require { 
    383389    my($class, $c, $pkg) = @_; 
     
    385391    for my $isa_pkg (@{ $class->isa_list_cache($c) }) { 
    386392        my $new_pkg  = "$isa_pkg\::$pkg"; 
    387         if (exists $pkg_require_cache{$new_pkg}) { 
    388             next unless $pkg_require_cache{$new_pkg}; 
     393        if (exists $pkg_require_cache->{$new_pkg}) { 
     394            next unless $pkg_require_cache->{$new_pkg}; 
    389395            return $new_pkg; 
    390396        } 
    391         $pkg_require_cache{$new_pkg} = 0; 
     397        $pkg_require_cache->{$new_pkg} = 0; 
    392398 
    393399        next unless Class::Inspector->installed($new_pkg); 
    394400        $new_pkg->require or return; 
    395         $pkg_require_cache{$new_pkg} = 1; 
     401        $pkg_require_cache->{$new_pkg} = 1; 
    396402 
    397403        return $new_pkg;