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=ff27b1280261e13dab30be6245de6ca6fb4e3d95;hp=daf27f6df48e4dfc9264ba3e11c3f8bce5ded4d9;hb=273db69d2f04dc29880dab6e45d59e25c3c3f1b3;hpb=49ae658349471834b403cb322f11f97258fcd0ca diff --git a/lib/Config/Any/Perl.pm b/lib/Config/Any/Perl.pm index daf27f6..ff27b12 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,24 +46,20 @@ Attempts to load C<$file> as a Perl file. sub load { my $class = shift; my $file = shift; - my $content; - - my $mtime = (stat($file))[9]; - if ( (not exists $cache{ $file }) || $cache{ $file }{ mtime } < $mtime ) { - my $exception; - { - local $@; - $content = do $file; - $exception = $@; - } - die $exception if $exception; - - $cache{ $file }{ mtime } = $mtime; - $cache{ $file }{ content } = $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 = $@; } + die $exception if $exception; - return $cache{ $file }{ content }; + return $content; } =head1 AUTHOR @@ -72,7 +68,7 @@ Brian Cassidy Ebricas@cpan.orgE =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.