X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=lib%2FConfig%2FAny%2FGeneral.pm;h=195148846ac6af12b9edf947f9ad2cbeb6f77d4e;hp=c91bd4d987f1d264b5f0cb73803e980580961b92;hb=59a8045203653a6f6cbccc3c24eb3884fba40ddc;hpb=c80a0905834ed09d487b84d7a00a3e92e44bbb62 diff --git a/lib/Config/Any/General.pm b/lib/Config/Any/General.pm index c91bd4d..1951488 100644 --- a/lib/Config/Any/General.pm +++ b/lib/Config/Any/General.pm @@ -41,6 +41,9 @@ sub load { my $class = shift; my $file = shift; + # work around bug (?) in Config::General + return if $class->_test_perl($file); + require Config::General; my $configfile = Config::General->new( $file ); my $config = { $configfile->getall }; @@ -48,6 +51,20 @@ sub load { return $config; } +# this is a bit of a hack but necessary, because Config::General is *far* too lax +# about what it will load -- specifically, it seems to be quite happy to load a Perl +# config file (ie, a file which is valid Perl and creates a hashref) as if it were +# an Apache-style configuration file, presumably due to laziness on the part of the +# developer. + +sub _test_perl { + my ($class, $file) = @_; + my $is_perl_src; + eval { $is_perl_src = do "$file"; }; + delete $INC{$file}; # so we don't screw stuff later on + return defined $is_perl_src; +} + =head1 AUTHOR =over 4 @@ -56,10 +73,20 @@ sub load { =back +=head1 CONTRIBUTORS + +=over 4 + +=item * Joel Bernstein C<< >> + +=back + =head1 COPYRIGHT AND LICENSE Copyright 2006 by Brian Cassidy +Portions Copyright 2006 Portugal Telecom + This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. @@ -77,4 +104,5 @@ it under the same terms as Perl itself. =cut -1; \ No newline at end of file +1; +