CGI Perl Tutorial

Web based School

Chapter 14

Tips, Tricks, and Future Directions


CONTENTS

Welcome to the last afternoon! In this chapter, you'll learn a few tips that can help you get the most out of CGI programming and find out where to go for more information. You also will examine some of the exciting developments that await in the future of CGI and the World Wide Web.

Making Browser-Sensitive Pages

Many Web browsers include support for tags that aren't part of the HTML specification. This has caused quite a "Tower of Babel" in the WWW, because your Web browser isn't guaranteed to display every page it encounters.

One browser that supports many non-standard tags is Netscape Navigator. Although it's currently the most popular browser, many people don't realize that there are non-Netscape users out there. Many even go as far as to exclude non-Netscape users entirely by suggesting that they download Netscape to read the page. More recently, Microsoft's Internet Explorer (MSIE), included with Windows 95, also includes non-standard tags-and not the same ones as Netscape. MSIE is quickly gaining in popularity, and may overtake Netscape.

This issue is further complicated by the emerging client-side Web languages: Java (supported on Netscape and MSIE), JavaScript (supported in Netscape and partially supported by MSIE), and ActiveX (supported only by MSIE).

Why use non-standard tags and languages? Well, the answer is simple: You can do all sorts of things to make your pages look better and include additional features. It seems a shame not to take advantage of these features, but how do you support all the users?

One answer is to include browser-specific versions of each page. Although it's a lot of work, many people consider this a worthwhile task. Their Web page often includes links such as Click here for the non-Netscape version or even Select your browser from the list below

You can take this one step further in a CGI program. The HTTP_USER_AGENT environment variable can let your CGI program know which browser is being used and change the output accordingly. Listing 14.1 shows a simple Perl program that displays different versions of a page, depending on the user agent.


Listing 14.1. A simple program to display different pages, depending on the browser.
01: #!/usr/bin/perl 02: 03: MAIN: { 04: print "Content-type: text/html\n\n"; 05: if (index($ENV{"HTTP_USER_AGENT"}, "Mozilla")) { 06: # Netscape Specific page 07: print <netscape/thispage.asp> 08: } 09: elsif (index(ENV{"HTTP_USER_AGENT"}, "Microsoft")) { 10: # Internet Explorer Specific Page 11: print <explorer/thispage.asp> 12: } 13: else { 14: # non-specific page for other browsers 15: print <thispage.asp> 16: } 17: exit 0; 18: }


Note
Notice that the string "Mozilla" is used here rather than "Netscape" to detect Netscape. Although "Netscape" also appears in the user agent value, it can't be used to differentiate between browsers, because some browsers (including MSIE) include the word "Netscape" to indicate that they are compatible.

You could even take this one step further and print an error message if anyone tries to access your page with a certain browser. If you're a big fan of Netscape, you could disallow access by non-Netscape users; if you dislike Netscape, you could disallow it.

Neither of these approaches is recommended, however. The WWW is intended to be platform-independent. Although you might use this trick to take advantage of browser-specific features, why exclude anyone?

Simplifying Perl Code

When you're writing a Perl program, one thing you might not think of is how the program looks. This makes sense, most of the time; if it works, why change it?

There is a benefit to readable code, however. It's easier to be sure that the program does what you intended it to. Debugging is easier, because you can isolate individual statements. Finally, if you ever have to debug someone else's Perl program or make a change to it, you'll wish it were written in a readable style.

With that in mind, take a look at a particularly bad example of Perl style and see what you can do to improve it. Listing 14.2 is probably the shortest complete program for parsing and displaying name/value pairs you've ever seen.


Listing 14.2. A short (and confusing) program to display name/value pairs.
01: #!/usr/bin/perl 02: MAIN: { print <<EOF; 03: Content-type: text/html 04: 05: <HTML><HEAD><TITLE>GET Variables</TITLE></HEAD> 06: <BODY><H1>GET Method Variable Display</H1> 07: EOF 08: foreach (%rqpairs = split(/[&=]/, $ENV{"QUERY_STRING")) { 09: tr/+/ /; 10: s/%(..)/pack("c",hex($1))/ge; } 11: while (($key,$value) = each %rqpairs) { 12: print "<LI>$key = $value\n"; } 13: print "</UL>End of variables.</BODY></HTML>"; 14: exit 0; }


As you can see, this isn't the easiest program to read. No wonder Perl is known in some circles as a difficult language. You can follow several tips to keep your Perl programs from looking like Listing 14.2:

  • Use consistent formatting and a consistent style for brackets { }.
  • Although Perl lets you do quite a bit in a single line, it usually is more readable if you split it up.
  • If a line is confusing, use a comment to clarify it.
  • The program in Listing 14.2 uses the print <<EOF; construct to print. This is an alternative to quotation marks and makes it easy to include HTML in your program. It isn't always safe, however: If I simply deleted the blank line after the Content-type header, the program would fail. It's often better to use individual print statements or to include the text in a file and display the file instead. If you keep the possible problems in mind, however, this construct can make for readable programs that are easy to modify.
  • Although you can do just about anything using the default variable $_, it's usually more readable to assign an actual variable name to a value.

Listing 14.3 shows the modified program. You should find it much easier to read-and much easier to modify for your needs.


Listing 14.3. The same program as Listing 14.2, modified for clarity and readability.
01: #!/usr/bin/perl 02: 03: MAIN: { 04: print "Content-type: text/html\n\n"; 05: print "<HTML><HEAD><TITLE>GET Variables</TITLE>"; 06: print "</HEAD><BODY>"; 07: print "<H1>GET Method Variables</H1>"; 08: print "The following variables were sent:"; 09: print "<UL>" 10: # GET data is in the environment variable 11: $request = $ENV{'QUERY_STRING'}; 12: # Split request into name/value pairs 13: %rqpairs = split(/[&=]/, $request)); 14: # Convert URI syntax to ASCII 15: foreach (%rqpairs) { 16: # plus signs become spaces 17: tr/+/ /; 18: # %nn (hex code) becomes ASCII character 19: s/%(..)/pack("c",hex($1))/ge; 20: } 21: # Display each value 22: while (($key,$value) = each %rqpairs) { 23: print "<LI>$key = $value\n"; 24: } 25: print "</UL>"; 26: print "End of variables."; 27: print "</BODY></HTML>"; 28: exit 0; 29: }


Looking At the Future of Perl

You used some of the new features of Perl 5, the latest version, earlier in this guide. Here is a summary of some of the important new features available:

  • The Perl interpreter has been completely rewritten and is faster and more efficient at compiling and error-checking.
  • It's possible to write more readable code. Mnemonic names are available for the cryptic variable names, such as $_ and $#.
  • A new warning option makes debugging easier. Try using perl -w. This turns on additional warning messages that point out many of the problems a new user might encounter when using Perl. You used this option in Chapter 13.
  • Variables can have different levels of scope; you can define a subroutine inside another subroutine, and it will be able to access local variables of the parent subroutine.
  • Array values can contain references to any variable. This makes it easy to create custom data structures.
  • Object-oriented features enable you to create object classes; a file, a program, or a subroutine can act as an object.
  • New features make it easy to call C and C++ routines from within Perl and to call Perl routines from C programs.
  • The regular expression mechanism has been improved and provides several new features. Most important, you can include spaces and comments within regular expressions for readability.

Examining Python: A New Language for CGI

You've heard of Perl, but have you heard of Python? Python is a language that has some similarity to Perl. Like Perl, it's interpreted and has an easy syntax. Python does have some definite advantages and is designed for easy CGI programming. You might want to consider it as an alternative to Perl.

Python is a relatively new language. It was developed by Guido van Rossum in Amsterdam, the Netherlands, and is ed by a company called Stichting Mathematisch Centrum.

Although Python is being considered by more and more users as an alternative to Perl for CGI programs, it is still young; Perl is still the most popular language by far. However, Python may have advantages for your programs if your server supports it.

Comparing Python and Perl

Like Perl, Python is an interpreted language. In order to use it, you must have installed a copy of the Python interpreter. If you want to use Python for CGI programs, you usually will need the help of the System Administrator to add Python support to the server.

Python includes a wide variety of features. Among the most important is that it is an object-oriented language. Although the latest version of Perl (Perl 5) includes object-oriented functions, Python was built from the ground up as an object-oriented language, making it more efficient and more extensible.

Another feature is the extensive library of functions available for Python. These include functions that enable you to communicate over networks and access system-specific functions. Most important for CGI programmers, a CGI library is available that makes everything easy.

The CGI library includes the following functions:

  • parse(): Reads and parses an HTML form's output by using the Get or Post method. You simply call this once at the beginning of the CGI program. It returns a dictionary data type containing all the keys and values, similar to an associative array in Perl. This function even properly handles form fields, such as checkboxes, which are defined more than once in the form.
  • print_environ_usage(): Prints a list of the environmental variables you can use in a CGI program. Mostly useful as a reference.
  • print_environ(): Prints a list of the defined environmental variables with their values. This is similar to the script introduced in Chapter 13, "Debugging CGI Programs."
  • print_form(): Prints the contents of a form. The output is neatly formatted and even includes HTML codes.
  • escape(): Converts special characters in a string to HTML escape codes. The less than character (<), for example, is converted to the HTML entity &lt. This makes it very easy to convert any text document for WWW output.

Additional libraries are available for working with URIs and for communicating with HTTP, FTP, and Gopher servers. This makes Python an ideal choice when building WWW search engines; in fact, one popular search engine, uses Python for all its programs.

Understanding the Python Language

Another feature of Python is that its language is much more readable than Perl in most cases. It doesn't include brackets, excessive parentheses, or punctuation-named variables (such as $_ , used in most Perl programs). Listing 14.4 shows an example of a Python function that inverts a dictionary (similar to an associative array). Keys are converted to values and vice versa.


Listing 14.4. A simple Python program.
1: def invert(table): 2: index = {} 3: for key in table.keys(): 4: value = table[key] 5: if not index.has_key(value): 6: index[value] = [] 7: index[value].append(key) 8: return index


You'll notice several things about the language. First of all, notice the lack of brackets, begin statements, and end statements. This is because Python uses indentation to define the start and end of functions.

Look at the following statements, for example: if value == 5 print value return value print "value is not 5"

The only thing telling Python which statements should be executed if the condition is true and which should be executed otherwise is the indentation. The print and return statements are considered part of a block after the if statement, because they are indented below it.

The advantage of this indentation-based syntax is that the code is very clean and readable. The semicolon (;), used to end each and every statement in C and Perl, is not necessary (or allowed) in Python.

Warning
There is a major disadvantage to this feature: You might end up spending hours testing a section of code, only to discover that the indentation is wrong on one of the lines. If you've ever programmed in COBOL, an ancient language used for business applications, you'll remember just how troublesome indentation problems can be.

Implementing Python

Python is available for several platforms, including UNIX, Windows NT, Macintosh, and DOS. In order to use Python, you'll need to install and compile the Python interpreter.

In order to use Python for CGI programs, you must install it at the system level on the UNIX (or other) machine that acts as an HTTP server. If you have your own server, you can set this up; otherwise, contact your System Administrator and ask him to install Python.

Examining Java and JavaScript: Bringing Life to HTML

The normal HTML of the WWW is static. You access one page, then click on a link, and another page appears. With CGI programming, things get a bit more exciting-pages can be generated dynamically, include updated data, and interact with user-entered data. Nevertheless, it still appears as a page of text.

Java, a new language developed by Sun Microsystems, Mountain View, CA, takes the concept one step further. Imagine updated stock information appearing "live" on your browser window. Imagine accessing a page containing animated icons instead of static ones. All of this, and much more, is possible with Java.

If you're frustrated with the limitations of CGI programming, Java might be the answer to your problems. Because data no longer is restricted to a page-by-page display, you can do almost anything. Java is explored further in the next sections. You'll also look at JavaScript, a simple scripting language based on Java.

Note
Although the Java language is simple, its features easily could fill a guide this size. This section is intended to give you a basic familiarity with the concepts behind Java and to give you an awareness of the impact it will have on the WWW and on you as a CGI programmer. To learn about the Java language, read Teach Yourself Java in 21 Days or Presenting Java, both published by Sams.net.

Understanding How Java Works

Java isn't really a replacement for CGI programming; it's a completely different concept. Instead of executing on the HTTP server, a Java application actually is downloaded and executed by the Web browser.

Java can be used for two types of programs: applets, which are embedded in Web pages with the <APPLET> tag, and full-scale applications, which can be used with the Java interpreter.

When you access a Web page that includes a Java applet, the entire application is downloaded to your browser. The browser then executes the code. In order to do this, the browser must include a Java interpreter.

Because you download and execute an entire program, the stateless programming model that you've dealt with in CGI programming doesn't apply to Java. Your program can ask for input from the user, accept it, calculate other data, display it, and ask for more input-all without communicating with the HTTP server.

A simple Java application, for example, might enable you to fill out an order form. The browser would download the Java applet, and then you would fill in the fields to specify your order. You then could click a Total button and receive a total for the order; this would be done by the Java applet and would require no communication with the server. When you are finished, the final order would be transmitted to the server.

Understanding How a Java Program Is Executed

As you probably know, there are two types of computer languages:

  • Compiled languages, such as C, must be compiled or translated into machine language before they can be run.
  • Interpreted languages, such as Perl, are executed one instruction at a time.

Java actually fits into both categories. Before you can use a Java applet, you must compile it using the Java compiler. However, the applet isn't compiled into machine language-at least not for any particular machine. It's compiled into a virtual machine code; effectively, it's machine language for an imaginary, simple machine.

The Java interpreter and the interpreter built into a Web browser act as a virtual machine to run the Java code. This means that the language is fast, like a compiled language, but also is platform-independent.

In order for a Java applet to work on any particular machine, the interpreter (or virtual machine) just has to be written for that platform. Best of all, the same compiled applet can be run on any type of system without recompiling it, which is essential for the Internet.

Note
The latest versions of Netscape and MSIE include just-in-time compilers for Java; these translate the Java bytecodes into native machine language for faster execution.

Looking At the Java Language

The Java language includes many commands for a variety of purposes. I won't go into the details of the commands here, but I will explain briefly what a Java applet looks like. See "Finding Useful Internet Sites for CGI Programmers," later in this chapter, for sources of additional information about the language.

Java is an object-oriented language; it treats all elements of the program as objects. An object can be a variable, a subroutine, or your application itself. The idea behind object-oriented languages is that an object can include both data and code; a "number" object, for example, would include the value of the number and the code needed to display it.

Listing 14.5 shows an example of a short Java applet. This program simply displays the text Hello World in large text on the browser's screen.


Listing 14.5. A simple Java applet.
01: import browser.Applet; 02: import awt.Graphics; 03: class HelloWorld extends Applet { 04: public void init() { 05: resize(150, 25); 06: } 07: public void paint(Graphics g) { 08: g.drawString("Hello world!", 50, 25); 09: } 10: }


As you can see, the language isn't too hard to understand, and it uses a syntax similar to Perl (actually based on C++) to delimit subroutines and sections of code.

Implementing Java in Your System

Although it sounds like Java is a ready-made language for the Internet, it wasn't designed for that purpose. Originally, it was intended for use in embedded systems-home appliances, stereos, toasters, traffic lights, and so on. Sun has modified Java to be easy to use with the WWW, however, and it turns out that it works very well.

In this section, you'll see what you need to get Java up and running on your system-whether you want to create your own custom Java applets or simply view applets created by others.

Browsing the Web with Java

As mentioned in the previous section, you need a browser that supports Java in order to view and execute Java applets on the WWW. Because Java is widely regarded as the "next big thing" on the Internet, you'll no doubt see many browsers supporting it soon. Right now, three browsers support Java:

  • HotJava is a browser developed by Sun Microsystems to showcase the Java language and its possible applications. It also works as a general-purpose WWW browser. HotJava currently is available only for Sun workstations, Windows 95, and Windows NT. Sun plans versions for the Macintosh and Solaris in the near future.
  • Netscape Navigator, from Netscape Communications, is the most popular Web browser used on the Internet today. Netscape has worked with Sun to add Java support to its browser. Version 2.0 was the first to support Java; the latest version, 3.0, includes improved Java support.
  • Microsoft Internet Explorer (MSIE) began support for Java with version 3.0. MSIE's support for Java is complete enough to compete with Netscape.

Developing Custom Java Applications

In order to develop a Java application, you'll need the Java compiler. The compiler is available from Sun's Web site, listed earlier. The compiler currently runs only on UNIX, Windows 95,
and Windows NT systems. The compiler is available as part of the Java Development Kit (JDK).

After you create your source code, you use the compiler to generate the virtual machine code, called a class. You then can include the application on your Web page. To do this, you use the new <APPLET> tag. Listing 14.6 shows an example of a short WWW page with a Java applet.


Listing 14.6. Embedding a Java applet in a Web page.
01: <HTML> 02: <HEAD> 03: <TITLE> Java Applet Sample </TITLE> 04: </HEAD> 05: <BODY> 06: The program output will appear below. 07: <HR> 08: <APPLET CLASS="HelloWorld.class"> </APPLET> 09: </BODY> 10: </HTML>


Looking At JavaScript: Scripting for the Web

JavaScript (originally called LiveScript) is a scripting language developed by Netscape Corporation and supported in the latest Netscape browsers. It now has been endorsed by Sun and many other companies as an ideal scripting language for the Internet. JavaScript also is supported in MSIE 3.0.

JavaScript is based on Java's syntax, but it is a different language with different uses. The basic differences follow:

  • Instead of creating and compiling a Java applet, you can embed JavaScript commands directly within an HTML Web page.
  • JavaScript uses simpler variable types and type checking than Java.
  • JavaScript is executed by an interpreter within the browser. Unlike Java, it can access information on the Web page, such as links or the contents of forms.

The simplest use for JavaScript is to add validation to HTML forms. For example, a script could check the number you enter in a field, and if it is outside the valid range, warn you immediately via a dialog box.

To use JavaScript, you embed it in the HTML of a page using the <SCRIPT> tag. Listing 14.7 shows a simple page that includes a very short script.


Listing 14.7. HTML with an embedded JavaScript program.
01: <HTML> 02: <HEAD><TITLE>Simple JavaScript Output</TITLE> 03: </HEAD> 04: <BODY> 05: <SCRIPT LANGUAGE="JavaScript"> 06: document.write("This is the output of the script.<BR>") 07: </SCRIPT> 08: Here's the body of the WWW page. 09: </BODY> 10: </HTML>


This page displays the script's output, a simple text string, before the actual body of the page.

Needless to say, many more complicated and exciting things can be done with JavaScript. It can be used to act on forms as a substitute for CGI in some cases. The latest version of JavaScript, implemented in Netscape 3.0, adds features for working with images, multi-media, and plug-ins; in addition, it can communicate with other languages, such as CGI and Java, for additional capabilities.

To learn more about JavaScript, see Netscape's JavaScript Authoring Guide on the Web at

Tip
You also can learn more about JavaScript by reading Teach Yourself JavaScript or Laura Lemay's Web Workshop: JavaScript, both published by Sams.net.

Finding Useful Internet Sites for CGI Programmers

Needless to say, this guide can't go into every detail about Perl, CGI, and the other products, such as Java and JavaScript, mentioned here. Thanks to the WWW, however, that information is easily available. The following sections include URIs for some of the sites that can be useful for CGI programmers. I'll also list some useful Usenet newsgroups where you can ask questions about these subjects.

Tip
Although these sites were accurate at the time of this writing, the WWW changes every day, and some sites may no longer be available or may have different addresses. If one of them is no longer accurate, try a Web search engine, such as AltaVista

CGI Information

First take a look at a few sites that include helpful information about CGI programming. These range from tutorials to detailed technical specifications.

A CGI Programmer's Reference

This is an excellent resource with information about all areas of CGI programming and links to many other useful sites. This is also the headquarters for the CGI FAQs (frequently asked questions), a useful compilation of questions and answers.

Web Developers' Virtual Library

This is a huge collection of links covering all aspects of WWW development, HTML, and CGI programming. Additional issues, such as security, and new languages, such as Java, also are represented.

ncSA's CGI Documentation

This is the most frequently cited reference for CGI programming. It is hosted by the National Center for Supercomputing Applications, developers of the original ncSA Mosaic and the ncSA HTTP server, which is used on a large number of Web servers. This is a tutorial explanation of the CGI standard, forms, and other features.

Tools for Aspiring Web Weavers

This includes a large collection of useful information about the WWW and links, as well as a complete section on CGI programming.

Perl Information

Here are a few sites you might find useful for information about the Perl language itself. Although they are not written specifically for CGI programming, they should help you understand the language and answer any questions you have about syntax.

Tom Christiansen's Perl Page

This site contains a great deal of information about the Perl language, its uses, and resources for learning more about it. You can reach it at http://www.perl.com/

The Perl Reference Manual

This is the official manual for Perl 4, converted to an online, searchable form. It isn't the ideal user interface, but it does include all the important information. It is the best resource for checking the syntax of commands. You can access the Perl Reference Manual at http://www-cgi.cs.cmu.edu/cgi-bin/perl-man

For an online version of the Perl 5 manual pages, see this site: http://www.perl.com/perl/manual/frames.asp

Perl 5 WWW Page

This is the place to go for the latest information about Perl 5. It includes links to the full documentation, along with an easy-to-read, hyperlinked list of new features in Perl 5. This page is updated as new features are added to the language. You can access the Perl 5 WWW Page at http://www.metronet.com/perlinfo/perl5.asp

Learning Perl

This includes a list of references for Perl, with hyperlinks to many useful sites to emphasize learning Perl. You can reach Learning Perl at http://www.teleport.com/~rootbeer/perl.asp

Perl Newsgroups

The misc Perl newsgroup is the best place to ask questions about Perl. Many experts are willing to answer your questions, and you often can find someone else already asking the same question. You can reach the Perl newsgroups at comp.lang.perl.misc

and comp.lang.perl.announce

Specific Product Information

The following sites can help you learn about the various products and languages mentioned in this chapter.

Python

The official site for Python is the Python Language home page at http://www.python.org/

You can find just about any type of information you need there. You also might want to try the following sites:

  • Newsgroup: Although Python is a young language, there already is much discussion in the newsgroup. This is a good place to ask questions. You can reach this newsgroup at
    comp.lang.python
  • Mailing list: This mailing list contains the same discussion as the newsgroup, converted to e-mail by a gateway. To subscribe, send e-mail to
    python-list-request@cwi.nl
  • The Python FAQ: This contains the list of frequently asked questions about Python, maintained by the author of Python, Guido van Rossum. It includes all the basics, and many specific language questions are explained here. You can contact the Python FAQ at
    http://www.python.org/doc/FAQ.asp

Java and JavaScript

You learned about Java and JavaScript earlier in this chapter. Here are some sites you can access to find more information:

  • Sun's Java Web Page: This is the official Java page. It includes links to download HotJava, Sun's Java browser for Sun workstations, and the Java Developers' Kit. It also includes complete Java documentation and marketing information. You can access the Java Web page at
    http://java.sun.com/
  • Java Documentation: This is the official location for Java documentation. Although much of the documentation is still under development, this is still the best way to learn the official Java syntax and usage. You can access this information at
    http://java.sun.com/doc/
  • Gamelan: This is a huge directory of online Java resources and publicly available applets. It also includes links related to JavaScript. Access this directory at
    http://www.gamelan.com/
  • The JavaScript Index: This is a comprehensive listing of sites and other resources devoted to JavaScript. Access it at
    http://www.c2.org/~andreww/javascript/
  • Java Newsgroup: Although Java is relatively new, there already is a thriving newsgroup devoted to it. This newsgroup includes discussions of all aspects of Java:
    comp.lang.java
  • JavaScript Newsgroup: A newsgroup also has been created for discussion of JavaScript. Any discussion relevant to JavaScript is welcome here:
    comp.lang.javascript

Netscape

Although Netscape has no official relation to CGI programming, it is the most popular WWW browser, and the features that Netscape chooses to include are currently a driving force on the Internet. Netscape already has introduced support for Java and JavaScript. To keep track of developments in the WWW from Netscape's point of view, use these sites:

Microsoft Internet Explorer

Microsoft Internet Explorer, particularly version 3.0, is serious competition for Netscape Navigator, with support for Java, JavaScript, and new technologies such as ActiveX. To learn more about MSIE or to download a copy, see Microsoft's Internet Explorer Web site: http://www.microsoft.com/ie/

Summary

This chapter examined some tips you can use to write good CGI programs. In addition, you learned about several developments that may affect the future of CGI:

  • Python, a language similar to Perl but with additional features for CGI programming
  • Java, a client-side language with sophisticated, object-oriented features
  • JavaScript, a scripting language loosely based on Java

You took a look at the new features of the Perl 5 language, which introduces new capabilities to simplify programming.

Finally, you learned about a number of  Internet sites-WWW pages and Usenet newsgroups-that will help you keep track of current developments in the CGI field and learn more about the other topics introduced here.

The most important thing to remember with CGI programming and other Internet tasks is to keep learning. Things change often, and if you don't follow new developments, you'll be left behind. Good luck in your CGI programming!

Q&A

Q
With the popularity of Netscape Navigator, is there any reason to bother supporting other browsers?
A
Yes. At this writing, MSIE is gaining popularity quickly and eventually may overtake Netscape. Another issue is that many users are using older versions of Navigator, so it's a good idea to design for more than one browser.
Q
I use different conventions for simplifying Perl code. Is there anything wrong with using other methods?
A
Not at all. Perl is an extremely flexible language, and you can write code in many different styles. Anything that works for you and your company is fine-but it's always a good idea to choose a style and use it consistently.
Q
You mentioned Python as an alternative to Perl for CGI programs. Are there any other alternative languages?
A
Yes. Many CGI programmers prefer to use C or C++, which can generate faster code than Perl or Python. UNIX shell languages, such as sh and csh, also are common and easy to use for simple scripts. Any language can be used, as long as the server supports it.