home *** CD-ROM | disk | FTP | other *** search
-
- <HTML>
- <HEAD>
- <TITLE>Term::ANSIColor - Color screen output using ANSI escape sequences</TITLE>
- <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
- <LINK REV="made" HREF="mailto:">
- </HEAD>
-
- <BODY>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> Term::ANSIColor - Color screen output using ANSI escape sequences</P></STRONG>
- </TD></TR>
- </TABLE>
-
- <A NAME="__index__"></A>
- <!-- INDEX BEGIN -->
-
- <UL>
-
- <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
-
- <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
- <LI><A HREF="#description">DESCRIPTION</A></LI>
- <LI><A HREF="#diagnostics">DIAGNOSTICS</A></LI>
- <LI><A HREF="#restrictions">RESTRICTIONS</A></LI>
- <LI><A HREF="#authors">AUTHORS</A></LI>
- </UL>
- <!-- INDEX END -->
-
- <HR>
- <P>
- <H1><A NAME="name">NAME</A></H1>
- <P>Term::ANSIColor - Color screen output using ANSI escape sequences</P>
- <P>
- <HR>
- <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
- <UL>
- <LI>Linux</LI>
- <LI>Solaris</LI>
- <LI>Windows</LI>
- </UL>
- <HR>
- <H1><A NAME="synopsis">SYNOPSIS</A></H1>
- <PRE>
- use Term::ANSIColor;
- print color 'bold blue';
- print "This text is bold blue.\n";
- print color 'reset';
- print "This text is normal.\n";
- print colored ("Yellow on magenta.\n", 'yellow on_magenta');
- print "This text is normal.\n";</PRE>
- <PRE>
- use Term::ANSIColor qw(:constants);
- print BOLD, BLUE, "This text is in bold blue.\n", RESET;</PRE>
- <PRE>
- use Term::ANSIColor qw(:constants);
- $Term::ANSIColor::AUTORESET = 1;
- print BOLD BLUE "This text is in bold blue.\n";
- print "This text is normal.\n";</PRE>
- <P>
- <HR>
- <H1><A NAME="description">DESCRIPTION</A></H1>
- <P>This module has two interfaces, one through <CODE>color()</CODE> and <CODE>colored()</CODE> and the
- other through constants.
- </P>
- <PRE>
-
- color() takes any number of strings as arguments and considers them to be
- space-separated lists of attributes. It then forms and returns the escape
- sequence to set those attributes. It doesn't print it out, just returns
- it, so you'll have to print it yourself if you want to (this is so that
- you can save it as a string, pass it to something else, send it to a file
- handle, or do anything else with it that you might care to).</PRE>
- <P>The recognized attributes (all of which should be fairly intuitive) are
- clear, reset, bold, underline, underscore, blink, reverse, concealed,
- black, red, green, yellow, blue, magenta, on_black, on_red, on_green,
- on_yellow, on_blue, on_magenta, on_cyan, and on_white. Case is not
- significant. Underline and underscore are equivalent, as are clear and
- reset, so use whichever is the most intuitive to you. The color alone
- sets the foreground color, and on_color sets the background color.</P>
- <P>Note that attributes, once set, last until they are unset (by sending the
- attribute ``reset''). Be careful to do this, or otherwise your attribute will
- last after your script is done running, and people get very annoyed at
- having their prompt and typing changed to weird colors.</P>
- <P>As an aid to help with this, <CODE>colored()</CODE> takes a scalar as the first
- argument and any number of attribute strings as the second argument and
- returns the scalar wrapped in escape codes so that the attributes will be
- set as requested before the string and reset to normal after the string.
- Normally, <CODE>colored()</CODE> just puts attribute codes at the beginning and end of
- the string, but if you set $Term::ANSIColor::EACHLINE to some string,
- that string will be considered the line delimiter and the attribute will
- be set at the beginning of each line of the passed string and reset at the
- end of each line. This is often desirable if the output is being sent to
- a program like a pager that can be confused by attributes that span lines.
- Normally you'll want to set $Term::ANSIColor::EACHLINE to <CODE>"\n"</CODE> to use
- this feature.</P>
- <P>Alternately, if you import <CODE>:constants</CODE>, you can use the constants CLEAR,
- RESET, BOLD, UNDERLINE, UNDERSCORE, BLINK, REVERSE, CONCEALED, BLACK, RED,
- GREEN, YELLOW, BLUE, MAGENTA, ON_BLACK, ON_RED, ON_GREEN, ON_YELLOW,
- ON_BLUE, ON_MAGENTA, ON_CYAN, and ON_WHITE directly. These are the same
- as <CODE>color('attribute')</CODE> and can be used if you prefer typing:</P>
- <PRE>
- print BOLD BLUE ON_WHITE "Text\n", RESET;</PRE>
- <P>to</P>
- <PRE>
- print colored ("Text\n", 'bold blue on_white');</PRE>
- <P>When using the constants, if you don't want to have to remember to add the
- <CODE>, RESET</CODE> at the end of each print line, you can set
- $Term::ANSIColor::AUTORESET to a true value. Then, the display mode will
- automatically be reset if there is no comma after the constant. In other
- words, with that variable set:</P>
- <PRE>
- print BOLD BLUE "Text\n";</PRE>
- <P>will reset the display mode afterwards, whereas:</P>
- <PRE>
- print BOLD, BLUE, "Text\n";</PRE>
- <P>will not.</P>
- <P>The subroutine interface has the advantage over the constants interface in
- that only 2 soubrutines are exported into your namespace, verses 22 in the
- constants interface. On the flip side, the constants interface has the
- advantage of better compile time error checking, since misspelled names of
- colors or attributes in calls to <CODE>color()</CODE> and <CODE>colored()</CODE> won't be caught
- until runtime whereas misspelled names of constants will be caught at
- compile time. So, polute your namespace with almost two dozen subrutines
- that you may not even use that oftin, or risk a silly bug by mistyping an
- attribute. Your choice, TMTOWTDI after all.</P>
- <P>
- <HR>
- <H1><A NAME="diagnostics">DIAGNOSTICS</A></H1>
- <DL>
- <DT><STRONG><A NAME="item_Invalid_attribute_name_%25s">Invalid attribute name %s</A></STRONG><BR>
- <DD>
- You passed an invalid attribute name to either <CODE>color()</CODE> or colored().
- <P></P>
- <DT><STRONG><A NAME="item_Identifier_%25s_used_only_once%3A_possible_typo">Identifier %s used only once: possible typo</A></STRONG><BR>
- <DD>
- You probably mistyped a constant color name such as:
- <PRE>
- print FOOBAR "This text is color FOOBAR\n";</PRE>
- <P>It's probably better to always use commas after constant names in order to
- force the next error.</P>
- <P></P>
- <DT><STRONG><A NAME="item_No_comma_allowed_after_filehandle">No comma allowed after filehandle</A></STRONG><BR>
- <DD>
- You probably mistyped a constant color name such as:
- <PRE>
- print FOOBAR, "This text is color FOOBAR\n";</PRE>
- <P>Generating this fatal compile error is one of the main advantages of using
- the constants interface, since you'll immediately know if you mistype a
- color name.</P>
- <P></P>
- <DT><STRONG><A NAME="item_Bareword_%25s_not_allowed_while_%22strict_subs%22_">Bareword %s not allowed while ``strict subs'' in use</A></STRONG><BR>
- <DD>
- You probably mistyped a constant color name such as:
- <PRE>
- $Foobar = FOOBAR . "This line should be blue\n";</PRE>
- <P>or:</P>
- <PRE>
- @Foobar = FOOBAR, "This line should be blue\n";</PRE>
- <P>This will only show up under use strict (another good reason to run under
- use strict).</P>
- <P></P></DL>
- <P>
- <HR>
- <H1><A NAME="restrictions">RESTRICTIONS</A></H1>
- <P>It would be nice if one could leave off the commas around the constants
- entirely and just say:</P>
- <PRE>
- print BOLD BLUE ON_WHITE "Text\n" RESET;</PRE>
- <P>but the syntax of Perl doesn't allow this. You need a comma after the
- string. (Of course, you may consider it a bug that commas between all the
- constants aren't required, in which case you may feel free to insert
- commas unless you're using $Term::ANSIColor::AUTORESET.)</P>
- <P>For easier debuging, you may prefer to always use the commas when not
- setting $Term::ANSIColor::AUTORESET so that you'll get a fatal compile
- error rather than a warning.</P>
- <P>
- <HR>
- <H1><A NAME="authors">AUTHORS</A></H1>
- <P>Original idea (using constants) by Zenin (<A HREF="mailto:zenin@best.com">zenin@best.com</A>), reimplemented
- using subs by Russ Allbery (<A HREF="mailto:rra@stanford.edu">rra@stanford.edu</A>), and then combined with the
- original idea by Russ with input from Zenin.</P>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> Term::ANSIColor - Color screen output using ANSI escape sequences</P></STRONG>
- </TD></TR>
- </TABLE>
-
- </BODY>
-
- </HTML>
-