perlfunc root <P> re - Perl pragma to alter regular expression behaviour <P> <HR> <P> <PRE> use re 'taint'; ($x) = ($^X =~ /^(.*)$/s); # $x is tainted here </PRE> <P> <PRE> $pat = '(?{ $foo = 1 })'; use re 'eval'; /foo${pat}bar/; # won't fail (when not under -T switch) </PRE> <P> <PRE> { <P> When <CODE>use re 'taint'</CODE> is in effect, and a tainted string is the target of a regex, the regex memories (or values returned by the m// operator in list context) are tainted. This feature is useful when regex operations on tainted data aren't meant to extract safe substrings, but to perform other transformations. <P> When <CODE>use re 'eval'</CODE> is in effect, a regex is allowed to contain <CODE>(?{ ... })</CODE> zero-width assertions even if regular expression contains variable interpolation. That is normally disallowed, since it is a potential security risk. Note that this pragma is ignored when the regular expression is obtained from tainted data, i.e. evaluation is always disallowed with tainted regular expresssions. See [perlman:perlre|perlre]. <P> For the purpose of this pragma, interpolation of precompiled regular expressions (i.e., the result of [perlman:perlop|perlop]) is <EM>not</EM> considered variable interpolation. Thus: <P> <PRE> /foo${pat}bar/ </PRE> <P> <EM>is</EM> allowed if <CODE>$pat</CODE> is a precompiled regular expression, even if <CODE>$pat</CODE> contains <CODE>(?{ ... })</CODE> assertions. <P> When <CODE>use re 'debug'</CODE> is in effect, perl emits debugging messages when compiling and using regular expressions. The output is the same as that obtained by running a <CODE>-DDEBUGGING</CODE>-enabled perl interpreter with the <STRONG>-Dr</STRONG> switch. It may be quite voluminous depending on the complexity of the match. Using <CODE>debugcolor</CODE> instead of <CODE>debug</CODE> enables a form of output that can be used to get a colorful display on terminals that understand termcap color sequences. Set <CODE>$ENV{PERL_RE_TC}</CODE> to a comma-separated list of <CODE>termcap</CODE> properties to use for highlighting strings on/off, pre-point part on/off. See [perlman:perldebug|perldebug] for additional info. <P> The directive <CODE>use re 'debug'</CODE> is <EM>not lexically scoped</EM>, as the other directives are. It has both compile-time and run-time effects. <P> See [perlman:perlmodlib|perlmodlib]. <HR>