File Coverage

blib/lib/Config/Any/Perl.pm
Criterion Covered Total %
statement 26 26 100.0
branch 4 4 100.0
condition 2 3 66.6
subroutine 7 7 100.0
pod 2 2 100.0
total 41 42 97.6


line stmt bran cond sub pod time code
1             package Config::Any::Perl;
2              
3 8     8   4326 use strict;
  8         22  
  8         226  
4 8     8   42 use warnings;
  8         18  
  8         214  
5              
6 8     8   42 use base 'Config::Any::Base';
  8         16  
  8         1344  
7 8     8   53 use File::Spec;
  8         18  
  8         178  
8 8     8   39 use Cwd ();
  8         15  
  8         1208  
9              
10             =head1 NAME
11              
12             Config::Any::Perl - Load Perl config files
13              
14             =head1 DESCRIPTION
15              
16             Loads Perl files. Example:
17              
18             {
19             name => 'TestApp',
20             'Controller::Foo' => {
21             foo => 'bar'
22             },
23             'Model::Baz' => {
24             qux => 'xyzzy'
25             }
26             }
27              
28             =head1 METHODS
29              
30             =head2 extensions( )
31              
32             return an array of valid extensions (C, C).
33              
34             =cut
35              
36             sub extensions {
37 10     10 1 51 return qw( pl perl );
38             }
39              
40             =head2 load( $file )
41              
42             Attempts to load C<$file> as a Perl file.
43              
44             =cut
45              
46             sub load {
47 17     17 1 11982 my $class = shift;
48 17         42 my $file = shift;
49              
50 17         36 my( $exception, $content );
51             {
52 17         30 local $@;
  17         29  
53             # previously this would load based on . being in @INC, and wouldn't
54             # trigger taint errors even if '.' probably should have been considered
55             # tainted. untaint for backwards compatibility.
56 17         31188 my ($cwd) = Cwd::cwd() =~ /\A(.*)\z/s;
57 17         3580 $content = do File::Spec->rel2abs($file, $cwd);
58 17 100 66     410 $exception = $@ || $!
59             if !defined $content;
60             }
61 17 100       116 die $exception if $exception;
62              
63 11         75 return $content;
64             }
65              
66             =head1 AUTHOR
67              
68             Brian Cassidy
69              
70             =head1 COPYRIGHT AND LICENSE
71              
72             Copyright 2006-2016 by Brian Cassidy
73              
74             This library is free software; you can redistribute it and/or modify
75             it under the same terms as Perl itself.
76              
77             =head1 SEE ALSO
78              
79             =over 4
80              
81             =item * L
82              
83             =item * L
84              
85             =back
86              
87             =cut
88              
89             1;