X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=lib%2FConfig%2FAny%2FPerl.pm;h=3e27a17b4115d17435f6e433d1abecb9fcdc7ab5;hp=6a2e3301013a749b6848ee5c1196a1443d4fb7e0;hb=c63419999f2c029f35bfcd700ae196eb0a3a08fa;hpb=72628dc786ef43d546023d6f17a86c3f5edeb21a diff --git a/lib/Config/Any/Perl.pm b/lib/Config/Any/Perl.pm index 6a2e330..3e27a17 100644 --- a/lib/Config/Any/Perl.pm +++ b/lib/Config/Any/Perl.pm @@ -3,7 +3,9 @@ package Config::Any::Perl; use strict; use warnings; -my %cache; +use base 'Config::Any::Base'; +use File::Spec; +use Cwd (); =head1 NAME @@ -44,33 +46,30 @@ Attempts to load C<$file> as a Perl file. sub load { my $class = shift; my $file = shift; - my $content; - unless ( $content = $cache{ $file } ) { - $content = eval { require $file }; - $cache{ $file } = $content; + my( $exception, $content ); + { + local $@; + # previously this would load based on . being in @INC, and wouldn't + # trigger taint errors even if '.' probably should have been considered + # tainted. untaint for backwards compatibility. + my ($cwd) = Cwd::cwd() =~ /\A(.*)\z/s; + $content = do File::Spec->rel2abs($file, $cwd); + $exception = $@ || $! + if !defined $content; } + die $exception if $exception; return $content; } -=head2 is_supported( ) - -Returns true. - -=cut - -sub is_supported { - return 1; -} - =head1 AUTHOR Brian Cassidy Ebricas@cpan.orgE =head1 COPYRIGHT AND LICENSE -Copyright 2007 by Brian Cassidy +Copyright 2006-2016 by Brian Cassidy This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.