X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=blobdiff_plain;f=lib%2Findirect.pm;h=c6ae98a86c16164e4c6e690478d85ce23dcacd32;hp=6e99ebaf06b7ae490e2911b884edf7894bfa8b5a;hb=9e1b933a7cdeed368a062f29cfe995d06416b714;hpb=feceaa694dff65ca67ac26a13b67e2c0f8bbb795 diff --git a/lib/indirect.pm b/lib/indirect.pm index 6e99eba..c6ae98a 100644 --- a/lib/indirect.pm +++ b/lib/indirect.pm @@ -11,13 +11,13 @@ indirect - Lexically warn about using the indirect object syntax. =head1 VERSION -Version 0.16 +Version 0.17 =cut our $VERSION; BEGIN { - $VERSION = '0.16'; + $VERSION = '0.17'; } =head1 SYNOPSIS @@ -58,8 +58,12 @@ This module is B a source filter. =cut BEGIN { - require XSLoader; - XSLoader::load(__PACKAGE__, $VERSION); + if ($ENV{PERL_INDIRECT_PM_DISABLE}) { + *_tag = sub ($) { 1 }; + } else { + require XSLoader; + XSLoader::load(__PACKAGE__, $VERSION); + } } =head1 METHODS @@ -153,6 +157,16 @@ The default warning/exception message thrown when an indirect call on an object The default warning/exception message thrown when an indirect call on a block is found. +=head1 ENVIRONMENT + +=head2 C + +If this environment variable is set to true when the pragma is used for the first time, the XS code won't be loaded and, although the C<'indirect'> lexical hint will be set to true in the scope of use, the pragma itself won't do anything. +This is useful for disabling C in production environments. + +Note that clearing this variable after C was loaded has no effect. +If you want to reenable the pragma later, you also need to reload it by deleting the C<'indirect.pm'> entry from C<%INC>. + =head1 CAVEATS The implementation was tweaked to work around several limitations of vanilla C pragmas : it's thread safe, and doesn't suffer from a C bug that causes all pragmas to propagate into Cd scopes.