diff options
author | Ilya Zakharevich <ilya@math.berkeley.edu> | 1998-07-15 13:02:48 -0400 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-07-21 04:03:46 +0000 |
commit | 02ea72ae554bc41558ce4208c02dbcce62b47ecf (patch) | |
tree | 2c4ce8d0cdbb555ae99cc4012af4519fab5049e2 /ext/re | |
parent | ecbdf7e8362e155a2c993b64b6fd51c3740160ea (diff) | |
download | perl-02ea72ae554bc41558ce4208c02dbcce62b47ecf.tar.gz |
applied a tweaked version of suggested patch
Message-Id: <199807152102.RAA19952@monk.mps.ohio-state.edu>
Subject: [PATCH 5.004_72] Enable/document colors in re.pm
p4raw-id: //depot/perl@1593
Diffstat (limited to 'ext/re')
-rw-r--r-- | ext/re/re.pm | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/ext/re/re.pm b/ext/re/re.pm index 4a44753172..7cea77dd42 100644 --- a/ext/re/re.pm +++ b/ext/re/re.pm @@ -27,6 +27,9 @@ re - Perl pragma to alter regular expression behaviour /^(.*)$/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.) =head1 DESCRIPTION @@ -57,7 +60,11 @@ When C<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 C<-DDEBUGGING>-enabled perl interpreter with the B<-Dr> switch. It may be quite voluminous depending on the complexity -of the match. +of the match. Using C<debugcolor> instead of C<debug> enables a +form of output that can be used to get a colorful display on terminals +that understand termcap color sequences. Set C<$ENV{PERL_RE_TC}> to a +comma-separated list of C<termcap> properties to use for highlighting +strings on/off, pre-point part on/off. See L<perldebug/"Debugging regular expressions"> for additional info. The directive C<use re 'debug'> is I<not lexically scoped>, as the @@ -72,6 +79,23 @@ taint => 0x00100000, eval => 0x00200000, ); +sub setcolor { + eval { # Ignore errors + require Term::Cap; + + my $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning. + my $props = $ENV{PERL_RE_TC} || 'md,me,so,se'; # can use us/ue later + my @props = split /,/, $props; + + + $ENV{TERMCAP_COLORS} = join "\t", map {$terminal->Tputs($_,1)} @props; + }; + + not defined $ENV{TERMCAP_COLORS} or ($ENV{TERMCAP_COLORS} =~ tr/\t/\t/) >= 4 + or not defined $ENV{PERL_RE_TC} + or die "Not enough fields in \$ENV{PERL_RE_TC}=`$ENV{PERL_RE_TC}'"; +} + sub bits { my $on = shift; my $bits = 0; @@ -80,7 +104,8 @@ sub bits { Carp::carp("Useless use of \"re\" pragma"); } foreach my $s (@_){ - if ($s eq 'debug') { + if ($s eq 'debug' or $s eq 'debugcolor') { + setcolor() if $s eq 'debugcolor'; require DynaLoader; @ISA = ('DynaLoader'); bootstrap re; |