Exclude vendorarch and sitearch from FatNode and ModuleSender
[scpubgit/Object-Remote.git] / lib / Object / Remote / FromData.pm
CommitLineData
7462160e 1package Object::Remote::FromData;
2
3use strictures 1;
4use Object::Remote;
5
6our %Modules;
7our %Not_Loaded_Yet;
8our %Seen;
9
10sub import {
11 my $target = caller;
12 return if $Seen{$target};
13 $Seen{$target} = $Not_Loaded_Yet{$target} = 1;
14}
15
16sub flush_loaded {
17 foreach my $key (keys %Not_Loaded_Yet) {
18 my $data_fh = do { no strict 'refs'; *{"${key}::DATA"} };
19 my $data = do { local $/; <$data_fh> };
20 my %modules = reverse(
21 $data =~ m/(^package ([^;]+);\n.*?(?:(?=^package)|\Z))/msg
22 );
23 $_ .= "\n1;\n" for values %modules;
24 @Modules{keys %modules} = values %modules;
25 delete $Not_Loaded_Yet{$key};
26 }
27}
28
29sub find_module {
30 flush_loaded;
31 my ($module) = @_;
32 $module =~ s/\//::/g;
33 $module =~ s/\.pm$//;
34 return $Modules{$module};
35}
36
371;