summaryrefslogtreecommitdiff
path: root/ext/re
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>1998-07-15 13:02:48 -0400
committerGurusamy Sarathy <gsar@cpan.org>1998-07-21 04:03:46 +0000
commit02ea72ae554bc41558ce4208c02dbcce62b47ecf (patch)
tree2c4ce8d0cdbb555ae99cc4012af4519fab5049e2 /ext/re
parentecbdf7e8362e155a2c993b64b6fd51c3740160ea (diff)
downloadperl-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.pm29
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;