File Coverage

blib/lib/modules.pm
Criterion Covered Total %
statement 30 40 75.0
branch 7 16 43.7
condition 1 3 33.3
subroutine 7 7 100.0
pod n/a
total 45 66 68.1


line stmt bran cond sub pod time code
1             package modules;
2            
3             our $VERSION = '0.04';
4            
5             our $DEBUG = 0;
6            
7 1     1   9686 use Carp;
  1         2  
  1         339  
8            
9             our $force = 1;
10            
11             sub import
12             {
13 1     1   27 my $package = shift;
14            
15 1         5 my $context = scalar caller;
16            
17 1         5 my @failed;
18            
19 1         3 for ( @_ )
20             {
21 7 100       37 if( /^([\-\+])force$/ )
22             {
23 3 100       15 $force = ($1 eq '-') ? 0 : 1;
24            
25 3 50       10 warn "force turned $force\n" if $DEBUG;
26            
27 3         5 next;
28             }
29            
30 4 50       10 if( ref( $_ ) eq 'HASH' )
31             {
32 0         0 foreach my $key ( keys %$_ )
33             {
34 0 0       0 printf "Hash: LOADING %s with %s\n", $key, $_->{$key} if $DEBUG;
35            
36 0         0 eval "package $context; use $key ".$_->{$key};
37            
38 0 0       0 if( $@ )
39             {
40 0         0 push @failed, $key;
41            
42 0         0 carp "Can't use module '$key'. $@";
43             }
44             }
45            
46 0         0 next;
47             }
48            
49 1     1   31 eval "package $context; use $_";
  1     1   6  
  1     1   50  
  1     1   10  
  1         5  
  1         48  
  1         52  
  1         4  
  1         55  
  1         1496  
  1         8132  
  1         56  
  4         627  
50            
51 4 50       29 if( $@ )
52             {
53 0         0 push @failed, $_;
54            
55 0         0 carp "Can't use module '$_'. $@";
56             }
57             }
58            
59 1 0 33     2791 if( @failed && $force )
60             {
61 1     1   53162 use CPAN;
  1         389303  
  1         547  
62            
63 0           CPAN::Shell->install( @failed );
64             }
65             }
66            
67             # Preloaded methods go here.
68            
69             1;
70             __END__