Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
re(3)		       Perl Programmers	Reference Guide			 re(3)

       re - Perl pragma	to alter regular expression behaviour

	   use re 'taint';
	   ($x)	= ($^X =~ /^(.*)$/s);	  # $x is tainted here

	   $pat	= '(?{ $foo = 1	})';
	   use re 'eval';
	   /foo${pat}bar/;		  # won't fail (when not under -T switch)

	       no re 'taint';		  # the	default
	       ($x) = ($^X =~ /^(.*)$/s); # $x is not tainted here

	       no re 'eval';		  # the	default
	       /foo${pat}bar/;		  # disallowed (with or	without	-T switch)

	   use re 'debug';		  # NOT	lexically scoped (as others are)
	   /^(.*)$/s;			  # output debugging info during
					  #	compile	and run	time

	   use re 'debugcolor';		  # same as 'debug', but with colored output

       (We use $^X in these examples because it's tainted by default.)

       When "use re 'taint'" 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	opera-
       tions on	tainted	data aren't meant to extract safe substrings, but to
       perform other transformations.

       When "use re 'eval'" is in effect, a regex is allowed to	contain	"(?{
       ... })" zero-width assertions even if regular expression	contains vari-
       able interpolation.  That is normally disallowed, since it is a poten-
       tial 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 the section on "(?{
       code })"	in the perlre manpage.

       For the purpose of this pragma, interpolation of	precompiled regular
       expressions (i.e., the result of	"qr//")	is not considered variable in-
       terpolation.  Thus:


       is allowed if $pat is a precompiled regular expression, even if $pat
       contains	"(?{ ... })" assertions.

       When "use re 'debug'" is	in effect, perl	emits debugging	messages when
       compiling and using regular expressions.	 The output is the same	as
       that obtained by	running	a "-DDEBUGGING"-enabled	perl interpreter with
       the --DDrr switch. It may be quite voluminous depending on the complexity
       of the match.  Using "debugcolor" instead of "debug" enables a form of
       output that can be used to get a	colorful display on terminals that un-
       derstand	termcap	color sequences.  Set "$ENV{PERL_RE_TC}" to a comma-
       separated list of "termcap" properties to use for highlighting strings
       on/off, pre-point part on/off.  See the Debugging regular expressions
       entry in	the perldebug manpage for additional info.

       The directive "use re 'debug'" is not lexically scoped, as the other
       directives are.	It has both compile-time and run-time effects.

       See the Pragmatic Modules entry in the perlmodlib manpage.

3rd Berkeley Distribution	  perl v5.6.2				 re(3)

N | S | D

Want to link to this manual page? Use this URL:

home | help