What is Perl and how does it help me make my website work?

In the words of the Perl documentation "Perl is a language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal)."

To put it simply, Perl is really good at reading and writing text files. If you've done any work building and maintaining websites, you are very familiar with a basic truth about them ... they are chock full of text files. Every HTML page is nothing more than a text file. Granted, they are formatted funny and they do contain some odd looking things, but they are still just plain old text files.

This fact makes languages like Perl ideal for dealing with HTML pages; reading them, creating them, managing them, etc. Because of its genesis on Unix-based computers, and also because of the Internet's early formative years on the same platforms, the two just sort of grew together. In fact, Perl is so intertwined with website development and services that it is very rare to find a web server that does not support Perl in some fashion or another.

"Okay ... So what is CGI?"

To really oversimplify, CGI (Common Gateway Interface) is a methodology for managing and generating the pages and resources delivered to a client by the web server. For example, a Perl program that reads a data file and formats a report is just a normal program. But a CGI program is one that runs as a result of an Internet HTTP request, then formats and returns the report as an HTML page.

Perl is the most common CGI programming language, mainly because of its ease of use and rapid development facilities, but also because the two have "grown up" together. So, the next time you see "Perl/CGI" written together, you will understand that what it means is a CGI program written using Perl.