Alien-ROOT
view release on metacpan or search on metacpan
inc/inc_Module-Load-Conditional/Module/Load/Conditional.pm view on Meta::CPAN
### skip commented out lines, they won't eval to anything.
return if $str =~ /^\s*#/;
### the following regexp & eval statement comes from the
### ExtUtils::MakeMaker source (EU::MM_Unix->parse_version)
### Following #18892, which tells us the original
### regex breaks under -T, we must modifiy it so
### it captures the entire expression, and eval /that/
### rather than $_, which is insecure.
my $taint_safe_str = do { $str =~ /(^.*$)/sm; $1 };
if( $str =~ /(?<!\\)([\$*])(([\w\:\']*)\bVERSION)\b.*\=/ ) {
print "Evaluating: $str\n" if $verbose;
### this creates a string to be eval'd, like:
# package Module::Load::Conditional::_version;
# no strict;
#
# local $VERSION;
# $VERSION=undef; do {
# use version; $VERSION = qv('0.0.3');
# }; $VERSION
my $eval = qq{
package Module::Load::Conditional::_version;
no strict;
local $1$2;
\$$2=undef; do {
$taint_safe_str
}; \$$2
};
print "Evaltext: $eval\n" if $verbose;
my $result = do {
local $^W = 0;
eval($eval);
};
inc/inc_Module-Load-Conditional/Module/Load/Conditional.pm view on Meta::CPAN
=head2 $Module::Load::Conditional::FIND_VERSION
This controls whether Module::Load::Conditional will try to parse
(and eval) the version from the module you're trying to load.
If you don't wish to do this, set this variable to C<false>. Understand
then that version comparisons are not possible, and Module::Load::Conditional
can not tell you what module version you have installed.
This may be desirable from a security or performance point of view.
Note that C<$FIND_VERSION> code runs safely under C<taint mode>.
The default is 1;
=head2 $Module::Load::Conditional::CHECK_INC_HASH
This controls whether C<Module::Load::Conditional> checks your
C<%INC> hash to see if a module is available. By default, only
C<@INC> is scanned to see if a module is physically on your
filesystem, or avialable via an C<@INC-hook>. Setting this variable
to C<true> will trust any entries in C<%INC> and return them for
( run in 0.250 second using v1.01-cache-2.11-cpan-4e96b696675 )