X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FConfig%2FAny%2FPerl.pm;h=e72b2e78fda8c81a7aa4c43b3d48ce7895f69b75;hb=8c6349de453e95debad3f72cce78563710518d57;hp=fee9e4d86a37036fa1bb7fc77a9408b1c95c606f;hpb=c793253e5f2ad3ca9d60e96e07a5d87fa344ec31;p=p5sagit%2FConfig-Any.git diff --git a/lib/Config/Any/Perl.pm b/lib/Config/Any/Perl.pm index fee9e4d..e72b2e7 100644 --- a/lib/Config/Any/Perl.pm +++ b/lib/Config/Any/Perl.pm @@ -4,8 +4,8 @@ use strict; use warnings; use base 'Config::Any::Base'; - -my %cache; +use File::Spec; +use Cwd (); =head1 NAME @@ -46,30 +46,37 @@ Attempts to load C<$file> as a Perl file. sub load { my $class = shift; my $file = shift; - my $content; - unless ( $content = $cache{ $file } ) { - $content = 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; } =head1 AUTHOR -Brian Cassidy Ebricas@cpan.orgE +Brian Cassidy =head1 COPYRIGHT AND LICENSE -Copyright 2006-2009 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. +it under the same terms as Perl itself. =head1 SEE ALSO -=over 4 +=over 4 =item * L