| PerlIO-via-EscStatus documentation | view source | Contained in the PerlIO-via-EscStatus distribution. |
Regexp::Common::ANSIescape -- regexps for ANSI terminal escapes
use Regexp::Common 'ANSIescape', 'no_defaults';
if ($str =~ /$RE{ANSIescape}/) {
# ...
}
my $re1 = $RE{ANSIescape}{-only7bit};
my $re2 = $RE{ANSIescape}{-sepstring};
See Regexp::Common for the basics of Regexp::Common patterns. An
ANSIescape pattern matches an ANSI terminal escape sequence like
Esc[30;48m # CSI sequence
Esc[?1h # CSI with private params
EscU # C1 control
Esc_ APPSTRING Esc\ # C1 with string param
\x9B 30m # ditto in 8-bit forms
\x9B ?1h
\x85
\x9F APPSTRING \x9C
The 7-bit patterns are Esc followed by various combinations of printable
ASCII "\x20" through "\x7E".
The 8-bit forms use bytes "\x80" through "\x9F". The -only7bit
option below can omit the 8-bit patterns if they might have another
meaning:
\x80 through \x9F,
so they're free to be the ANSI escapes. \x80 through \x9F have the ANSI meaning, so Perl
wide-char strings on ASCII systems are fine (but not EBCDIC). \x80 through \x9F as intermediate parts of
normal characters, so you must either decode to code points first, or use
-only7bit. \x80 through \x9F as characters, eg. the DOS
code page 1252 extension of Latin-1. Generally -only7bit should be used
in that case.The parameter part like "0" in "Esc[0m" can be any bytes 0x30 through 0x3F, so "private parameter" values like the VT100 "DECSET" extensions are matched.
{-only7bit}{-only8bit}Match only the 7-bit forms like "\eE". Or match only the 8-bit forms
like "\x{85}". The default is to match both. The 7-bit forms are the
most common.
{-sepstring}By default the string parameter to APC, DCS, OSC, PM and SOS is included in the match, for example an APC like
\x{9F}Stringarg\x{9C}
is matched in its entirety. With -sepstring the pattern instead matches
the start "\x{9F}" and the terminator "\x{9C}" individually, with the
Stringarg part unmatched.
In both cases the strings can be any characters through to the first ST form. The ANSI standard restricts the characters in the "command string" to APC, DCS, OSC and PM, as opposed to anything for "character string" to SOS. That restriction is not enforced by ANSIescape, currently.
{-keep}With the standard -keep option parens are included to set the following
capture variables
$1The entire escape sequence.
$2The parameters to a CSI sequence. For example
\e[30;49m -> 30;49 (SGR)
\e[?5h -> ?5 (DECSCNM extension)
$3The intermediate characters (if any) and final character of a CSI escape. For example
\e[30m -> m
\e[30+P -> +P
ANSIescape should be loaded through the Regexp::Common mechanism, see
Loading specific sets of patterns. in Regexp::Common. Remember that loading
a non-core pattern like ANSIescape also gets all the builtin patterns.
# ANSIescape plus all builtins
use Regexp::Common 'ANSIescape';
If you want $RE{ANSIescape} then add no_defaults (or a specific set of
builtins desired).
# ANSIescape alone
use Regexp::Common 'ANSIescape', 'no_defaults';
The ANSI standard can be obtained as ECMA-48 at http://www.ecma-international.org/publications/standards/Ecma-048.htm
http://user42.tuxfamily.org/perlio-via-escstatus/index.html
Copyright 2008, 2009, 2010, 2011 Kevin Ryde
PerlIO-via-EscStatus is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
PerlIO-via-EscStatus is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with PerlIO-via-EscStatus. If not, see <http://www.gnu.org/licenses/>.
| PerlIO-via-EscStatus documentation | view source | Contained in the PerlIO-via-EscStatus distribution. |