Perl/Fun with Named Colors

The Wikitable at Named Colors was generated by a simple Perl program we can call colors.pl. If you have Perl installed, you should be able to run this basic script while learning a bit of Perl.

The list
First we want to populate the list of – Named Colors; @Colors = ("AliceBlue".."YellowGreen");

We begin with a plain text file that lists all 139 Named Colors, each on its own line with no spaces: AliceBlue AntiqueWhite Aqua Aquamarine Azure Beige Bisque Black BlanchedAlmond Blue BlueViolet Brown BurlyWood CadetBlue Chartreuse Chocolate Coral CornflowerBlue Cornsilk Crimson Cyan DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DimGray DodgerBlue FireBrick Gray Green GreenYellow Honeydew HotPink IndianRed Indigo Ivory Khaki Lavender LavenderBlush LawnGreen LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linen Magenta Maroon MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed MidnightBlue MistyRose Moccasin NavajoWhite Navy OldLace Olive OliveDrab Orange OrangeRed Orchid PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip PeachPuff Peru Pink Plum PowderBlue Purple Red RosyBrown RoyalBlue SaddleBrown Salmon SandyBrown SeaGreen Seashell Sienna Silver SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Tan Teal Thistle Tomato Turquoise Violet Wheat White WhiteSmoke Yellow YellowGreen

If you want to play with these colors, copy the list and save it in your working directory as  NamedColors.txt 

The script
Now, in that same directory, make a new file called colors.pl or whatever you like. Start with the usual opening line: The -w switch tells your compiler to warn you of errors in your syntax.
 * 1) !/usr/bin/perl -w
 * 1) colors.pl - a simple script for handling named colors.

It's nice to add the script's filename and a brief description of what it does.

Slurping in the list
Many perl coders refer to populating an array (@ArrayName) from an external file as the process of "slurping". Perl has built in functions, open and close that give your scripts access to files on your local machine.

open (COLORS, "NamedColors.txt") or die; @Colors=; close COLORS;

We open (read-only) the bare list of NamedColors and slurp it into an array, @Colors. We do this via a filehandle called &lt;COLORS&gt;. Then we close the unaltered file.

Iterating the list
Now we use a foreach loop statement to break each $color out of @Colors and wrap it in wiki syntax for tables, stuffing each color into a new array, @NamedColors :

foreach $color (@Colors) { chomp$color; @NamedColors=("@NamedColors", 	"\n|- style=\"background:$color\"", 	"\n|style=\"color:black\"|$color", 	"\n|style=\"color:white\"|$color") }

Notice that the "s (double quotes) for the style attributes in the wiki syntax must be escaped with \s (backslashes).

The chomp function removes the newline characters from each item in the list, which were included in NamedColors.txt to make it more readable.

The colors.pl script produces wiki table syntax foreach color appending @NamedColors with:

|- style="background:AliceBlue" |style="color:black"|AliceBlue |style="color:white"|AliceBlue

Printing the table
When the loop has iterated the whole list, we now use a new file handle COLORTABLE to hold and print the newly composed table rows and cells:

open (COLORTABLE, ">ColorTable.txt") or die; print {COLORTABLE} "@NamedColors"; close COLORTABLE;

The open statement this time is write-enabled (>). The colors.pl script has now created a new file in your working directory – ColorTable.txt

You can add a little confirmation message at the end:

print "\n A file: ColorTable.txt has been written to your working directory\n";

Running the script
To run the script make sure you have NamedColors.txt in your current working directory - the same directory from which you run colors.pl. In a terminal, you type: perl colors.pl

Now you can open ColorTable.txt and enclose it with {| and |}. Once you get the hang of it, you can make all sorts of nifty tools for manipulating colors with wiki syntax and perl scripts.

More information
This lesson assumes that you have Perl up and running on your local machine and that you know something about working from a command line or terminal and editing with a text editor. The above script is very basic. If you need more background on Perl, feel free to ask questions at Topic talk:Perl.

For ideas on how to alter the script to do other things with Named Colors, you may find or post some on Talk:Perl/Fun with Named Colors.