… | |
… | |
97 | unless (defined &$func) { |
97 | unless (defined &$func) { |
98 | my $pkg = $func; |
98 | my $pkg = $func; |
99 | do { |
99 | do { |
100 | $pkg =~ s/::[^:]+$// |
100 | $pkg =~ s/::[^:]+$// |
101 | or return sub { die "unable to resolve '$func'" }; |
101 | or return sub { die "unable to resolve '$func'" }; |
|
|
102 | |
|
|
103 | local $@; |
102 | eval "require $pkg"; |
104 | eval "require $pkg"; |
|
|
105 | |
|
|
106 | my $error = $@; |
|
|
107 | $error =~ /^Can't locate .*.pm in \@INC \(/ |
|
|
108 | or return sub { die $error }; |
103 | } until defined &$func; |
109 | } until defined &$func; |
104 | } |
110 | } |
105 | |
111 | |
106 | \&$func |
112 | \&$func |
107 | } |
113 | } |