Perl is the Right Tool for the Job
October 4, 1999
Perl does not attempt to be a super
language. In fact, compared to some more robust languages out
there, Perl solves only a few, though crucial, problems.
Fortunately however, because
Perl is
specialized, it does the jobs it sets out to do exceptionally
well. And, better yet, the limited set of problems that Perl
can solve happens to fit very well with the demands of CGI.
Perl and CGI are simply a match made in
heaven. Common Gateway Interface (CGI), as its name implies,
provides a "gateway" between a human user with unexpected and
complex needs, and a powerful, command/logic oriented server.
As a gateway, CGI must perform one task very well. It must
translate.
All CGI applications must translate the
needs of clients into server requests, and translate server
replies into meaningful and well-presented "answers". This
can be quite a chore, since computers and humans typically
speak very different languages.
As such, CGI must be adept at manipulating text (be it the
text input by the client or the text received from the
server). A CGI application must be able to take "strings"
of data and translate them from one language to
another constantly and quickly.
As it so happens, Perl has a wide variety of tools designed
to manipulate strings of data. It is,
in fact, one of the best languages around for string
manipulation.
What's more, CGI must serve as gateway not just for one
client and one server but for as many types of clients and
as many types of servers as possible. It must be more than a
bilingual translator, it must be multilingual, providing
translation services between dozens of browser types, server
types and operating systems.
Again Perl shines. Fortunately, Perl is highly portable.
Due to the hard work and good intentions of many net hackers,
Perl has been ported to just about every operating
system you would want to run a Web server on.
Finally, Perl's weaknesses are not so
negative in a web environment.
Most CGI tasks, which are ultimately at the mercy of
bandwidth speed, do not demand much gusto from the
application. While other compiled languages may boast ten
times the power and speed or Perl, with complex functions up
the yazoo, using one is like bringing in the hydrogen bomb to
kill an ant. Perl is simply the right tool for the job. Other
languages are typically overkill.
Perl is Easy
Perl is also easy to understand. Because
Perl is an interpreted language, for example, there are no
compilers and no illegible machine code compiled applications.
What you see is what you get. The code that is run by the Web
server, is the code that you see in your text editor window.
Since Perl is simple in design, it is
also easy to modify, maintain and customize (which is really
where the cost of software comes from anyway). That is,
because Perl source code is so legible, it is very easy for
one to pick up a script and quickly modify it to solve
similar or new problems. Perl is a cut and paste language and
program logic is easily transferred and manipulated between
projects.
The benefit of this, of course, is that Perl is supported by
a wide body of CGI freelance programmers. Unlike the more
cryptic languages like C++ or Visual Basic, Perl is accessible
to anthropology majors and computer science majors
alike. In fact, newsgroups like comp.lang.perl are often too
prolific to frequent on a regular basis. The Perl community is
thriving and thanks to the web, expanding rapidly.
Thus, since so many people can write and modify Perl, it is
very easy for you to find someone to do it for you cheaply
and to do it well. You need not kneel at the mercy of the few
reclusive wizards of other arcane languages who confidently
slide on the curves of supply and demand. There is an
abundance of qualified, starving students with skills enough
to solve most of your programming needs for very cheap rates,
especially if they are given working
code to modify rather than asked to write one from scratch.
CGI (Common Gateway Interface)
Introduction to the Web Application Development Environment (Tools)
SSI (Server Side Includes)
|