Chapter 22

Internet Resources


CONTENTS

If you've read the rest of this book, you have a fairly good understanding of Perl. This chapter introduces you to some resources that can take you to the next level of understanding. You can see which Usenet newsgroups are best to read, where to find Perl scripts that you can copy and modify for your own use, and other useful information.

First, you can read about Usenet, a service that uses news articles to deliver information. You can browse through the newsgroups and pick up useful information. Additionally, any time you have a question on Perl or CGI programming you can post the question to a newsgroup. Responses to questions are usually quick if your subject lines are well thought-out and descriptive.

Next, some Web sites you can visit are listed. They have useful Web, CGI, and Perl related libraries, sample scripts, and documentation that can be extremely helpful.

Tip
If you are new to CGI programming with Perl, you will want to visit each of these sites listed in this chapter. Doing this will give you a good understanding of what is available to help you become a great CGI programmer. As you visit the sites, keep track of useful files that can be downloaded that interest you, including their version and the date. You might also bookmark the site in your Web browser. When you are done visiting all the sites, you will know where to access the most recent of the tools and you can begin to download and build your own CGI development library.

Usenet Newsgroups

Usenet is an Internet service that distributes articles or messages between servers. Each article is targeted to a specific newsgroup. You need a news reader program in order to download articles from the news server to your local machine.

Tip
If you are using Windows 95, you can use the news reader that comes with Netscape, or you can download Free Agent from the http://www.forteinc.com/forte/ web page.

There are several newsgroups that are useful to Perl and CGI programmers. They are listed in Table 22.1.

Table 22.1  Useful Newsgroups

NewsgroupDescription
comp.lang.perl.miscCovers general Perl questions and issues.
Comp.lang.perl.announceCovers Perl-related announcements.
Comp.lang.perl.modulesCovers new module announcements and questions.
comp.lang.perl.tkPerl/Tk integration and usage discussions.
comp.infosystems.www.CGI issues in web authoring.authoring.cgi
comp.infosystems.www.Not Perl-related, but very useful to monitor announcenew developments on the web.
comp.infosystems.www.Covers general web server questions servers.miscand issues. There are alsonewsgroups specifically devoted to individual server products.
comp.internet.net-Another newsgroup that's good for monitor- happeningsing Internet developments.

The most useful Perl-related newsgroup is comp.lang.perl.misc because of the breadth of topics that are covered. This is the newsgroup you will most likely post to when you are having a Perl language problem or simply have a question that needs answering.

Caution
It is generally considered poor manners to post your question in more than one newsgroup. Most people monitor at least three of the four Perl newsgroups and will be annoyed to see your question multiple times.

Figure 22.1 : A random sample of the Article in the comp.lang.perl.misc Newsgroup.

Before you post to any newsgroup, read the Perl FAQ. A FAQ is a frequently-asked questions document. If you ask a question that is already answered in the FAQ document, you will be yelled at by other people reading the list. At all times, remember that you are asking others for their help. They are under no obligation to help. If you are rude, insulting, unclear, or lazy, you can expect the same treatment in return. To quote Patrick Swayze in the movie Roadhouse, "Be polite!"

You can find the FAQ on the http://www.perl.com/perl/faq/ Web page. In addition, this site will point you to other FAQs.

The comp.lang.perl.modules newsgroup is very helpful, both to check out what modules are available and how they are being used, and if you have any questions or problems with existing Perl modules, or want to ask about the existence of modules to support a particular need.

The comp.lang.perl.tk newsgroup is a forum to discuss Tk and Perl. Tk is an interface tool developed by Sun, primarily to use with Tcl, an embeddable scripting language. There have been Tk extensions made to Perl5 to allow integration. If you are interested in using both, you will definitely want to check out this newsgroup. You can also find a FAQ at the http://w4.lns.cornell.edu/~pvhp/ptk/ptkFAQ.html web page.

Another useful newsgroup is comp.infosystems.www.authoring.cgi. It will contain many references to CGI programming using Perl, which is one of the more popular approaches to CGI. Look at all of the newsgroups beginning with comp.infosystems.www for those that meet your needs.

Web Sites

The following sites are good places to visit to build up your Perl or CGI script library. In addition, the sites will begin to give you an exact idea of what already exists that you can use, or modify for your own use. You will be amazed at what is available that is either freeware or shareware.

The Perl Language Home Page

http://www.perl.com

The Perl language home page is connected to the Internet via a 28.8K link, so be prepared to wait a little bit while downloading. Around the end of July, the server was having difficulties staying up-hopefully they have been resolved by the time you read this.

However, when the site is available, it has valuable information. You should definitely stop in and browse.

Pearls of Wisdom by Larry Wall

ftp://convex.com/pub/perl/info/lwall-quotes

Larry Wall is the inventor of Perl. His admirers have created this web page to commemorate some of Larry's wittier comments.

Larry as a nice guy:

"Even if you aren't in doubt, consider the mental welfare of the person who has to maintain the code after you, and who will probably put parens in the wrong place."-Larry Wall in the perl man page

Larry as a philosopher:

"What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?"-Larry Wall in <1992Aug26.184221.29627@ netlabs.com>

Larry as a computer nerd:

"I might be able to shoehorn a reference count in on top of the numeric value by disallowing multiple references on scalars with a numeric value, but it wouldn't be as clean. I do occasionally worry about that." -lwall

Larry as a programmer with impossible specifications:

"You want it in one line? Does it have to fit in 80 columns? :)"-Larry Wall in <7349@jpl-devvax.JPL.NASA.GOV>

Yahoo

http://www.yahoo.com

One of the best places to begin a search for information or for files is at Yahoo. This is one of the better organized and comprehensive search sites on the Web.

Figure 22.2 : The Yahoo Site.

Type a keyword into the input box and click the Search button to search the Yahoo database.

Yahoo has separate categories for Perl and CGI. The Perl Web page is:

http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Perl/

And the CGI page is:

http://www.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/CGI___Common_Gateway_Interface/

The CGI.pm Module

http://www-genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html

CGI.pm is a module that provides powerful functions for performing HTML form and CGI programming with Perl. This library requires Perl 5.001m, and makes use of object-oriented techniques. This is a must for your Perl bookmark list.

Selina Sol's CGI Script Archive

http://www2.eff.org/~erict/Scripts/

This attractive and very useful site contains links to many fairly sophisticated CGI scripts. For example, Web Chat 1.0 contains a slide show script, guest book, a complete shopping cart example, and many others. This site not only provides the sample scripts but you can also see them in action and view the HTML and other documents that the example uses. Additionally, the examples are fully documented, easy to understand, and are very easy to follow. Table 22.2 shows some of the scripts and their descriptions.

Table 22.2  Some of the Scripts Available at Selina Sol's Site

ScriptDescription
Selena Sol's Electronic Outlet 2.0 (database) Implements a shopping cart system using a database
Selena Sol's Electronic Outlet 2.0 (HTML) Implements a shopping cart system using HTML
Cool Runnings Music CatalogShopping cart concept for catalogs
The Form ProcessorProcess form input, using hidden variables
Database Manager 2.0A flat file database management tool
Database Search Engine 1.0Search engine for the Database Manager 2.0
Groupware CalendarCalendar that can be read/modified by group
Keyword Search Engine 3.0Traverses HTML documents searching for keyword and returns output
authentification-lib.plAuthentification perl module
date.plDate based perl module

The Web Developer's Virtual Library

http://www.stars.com

This site is a very comprehensive resource that the site terms a "Web developer's encyclopedia." There are many tutorials on HTML, CGI, HTTP, Databases, and Style Guidelines. This site is an incredibly rich source of links to virtually any Web development-related topic you can think of. The CGI page has 69 links, the HTML has 55 links, and so on. This site is definitely a must for visiting, especially when you have time to do a little link hopping and exploring, or when you need to find a Web development resource.

Introduction to CGI

http://www.virtualville.com/library/cgi.html

This site explains how the CGI specification works and provides a nice set of link to other resources.

Perl for Win32

http://www.perl.hip.com/ - home page
http://www.perl.hip.com/PerlFaq.htm - FAQ
http://www.perl.hip.com/perlis.htm - DLL for MS IIS

I believe that hip communications inc. has the most advanced and stable Perl implementation for Windows 95 and Windows NT. They have also made a DLL available to let Perl work with the Microsoft Internet Information Server. This library will work with the Microsoft Internet Information Server to improve the efficiency of CGI access with Perl. Note that the release of this DLL may still be a beta release.

Randal L. Schwartz's Home Page

http://www.teleport.com/~merlyn/

Randal is one of the most knowledgeable Perl gurus. His home page has links to some of the columns that he wrote for the Web Techniques and UNIX Review magazines.

Dale Bewley's Perl Scripts and Links!

http://www.engr.iupui.edu/~dbewley/perl/ - Perl information
http://www.engr.iupui.edu/~dbewley/cgi/ - CGI information

These web pages are very nicely laid out. They contain sections on books, references, tutorials, and script archives. In addition, Dale frequents the #perl and #cgi irc channels using a nickname of dwnwrd. Make sure to say hi if you see him. Figure 22.3 shows the beginning of Dale's Perl page.

Figure 22.3 : Dale's Perl Page.

Matt's Script Archive

http://www.worldwidemart.com/scripts/

Matt Wright's scripts are turning up all over the Web. His Perl page has examples of guestbooks, counters, and simple search scripts.

The Comprehensive Perl Archive Network

http://www.perl.com/CPAN - this site will connect you to a mirror site.
ftp://ftp.funet.fi/pub/languages/perl/CPAN/ - use if Perl server is done.

The Comprehensive Perl Archive Network is a set of Web sites that mirror another. The network is a volunteer organization so don't expect a lot of documentation and hand-holding. At each site, there is a sub-directory labeled /modules which will contain references to various Perl modules that are stored there. To access a list of the modules look at the /modules/01modules.index.html Web page. Module development guidelines can be found at /modules/00modlist.long.html. In addition, the modules are listed by author, category, and by module.

Also, check out the /scripts sub-directory. This sub-directory is itself sub-divided into more directories, each representing a different category. Each category has scripts that can be examined, used, and modified.

Database API for Perl

http://www.hermetica.com/technologia/DBI/index.html - DBperl home page
http://www.fugue.com/dbi/ - DBperl mailing lists

Tim Bunce, the author of Dbperl says, "DBperl is a database access Application Programming Interface (API) for the Perl Language. The DBperl API Specification defines a set of functions, variables and conventions that provide a consistent database interface independent of the actual database being used." With DBperl you can access the following databases: Oracle, Sybase, mSQL, Informix, and Quickbase. Plans are currently underway to implement an interface for ODBC.

The cgi-lib.pl Home Page

http://www.bio.cam.ac.uk/cgi-lib/

This famous library is widely used by many Perl/CGI programmers. The library includes functions such as ReadParse() which will parse the data passed to the script from the form, or HtmlTop() and HtmlBot() which will print out specific <head> and end of <body> sections of an HTML document.

Caution
Before using this library, read information on the http://perl.com/perl/info/www/!cgi-lib.html Web page for a cogent set of reasons why you should use the CGI.pm module instead.

The CGI Collection

http://www.selah.net/cgi.html

This site has a set of scripts, some created with Perl and some created with C. Among some of the scripts you can find at this site are those listed in Table 22.3. In particular check out how a simple little script such as Logger.cgi can perform a very useful function.

Table 23.3  Robert Niles' CGI Collection Web Site

Script NameDescription
MailForm.cgiCustomizable mailform CGI script that include To, Cc, and Bcc fields
Guestbook.cgiGuestbook CGI script
Logger.cgiVery simple script that will log visitors
FrameChatOdd little application that will implement a frames based chat service. Perl 5 is required

HTML Form Processing Modules (HFPM) Home Page

The HFPM is a set of modules written to accept a submitted HTML form, possibly modify the contents of the submitted fields, and output the result using e-mail, appending to a file, and/or displaying it to the user or returning an arbitrary URL. They also operate on the environmental variables passed in from the client and server.

You will need perl5 and a UNIX-based system to use the modules listed at this site, and a copy of CGI.pm, mentioned previously.

PureAmiga

http://www.netlink.co.uk/users/PureAmiga/pcgi/index.html

You might think that all of the activity for CGI scripting with Perl is done only on UNIX or Windows NT. However, this site has many excellent examples of CGI scripting for the Amiga.

MacPerl

http://err.ethz.ch/~neeri/macintosh/perl.html - home page
http://www.unimelb.edu.au/~ssilcot/macperl - primer/home.html - tutorial
http://www.marketspace.com.au/~adam/ - scripts
ftp://ftp.netcom.com/pub/ha/hal/MacPerl/faq.html - FAQ

Apple computers can also run Perl.

CGI Scripts and HTML Forms

http://kufacts.cc.ukans.edu/info/forms/forms-intro.html

This site contains a nice little introduction to CGI and forms. Not only does it describe the process, it also provides graphics that demonstrate how HTML Forms/CGI interact.

The CGI Documentation by ncSA

http://hoohoo.ncsa.uiuc.edu/docs/cgi/

If you want to learn something, sometimes you just have to go back to the source. This site provides a CGI overview. It also includes tips on writing secure CGI scripts, a topic that must always concern CGI programmers.

Miscellaneous Sites

The basic Perl manual can be found at: http://www.atmos.washington.edu/perl/perl.html

The University of Florida Perl page can be found at: http://www0.cise.ufl.edu/perl/

Internet Relay Chat, or IRC

The Internet Relay Chat service is a powerful tool. If you're lucky you can connect with very knowledgeable people who will answer your questions. The advantage of IRC is that you can hold a real-time conversation with other people. You ask a question, they respond. You can then ask for clarification or actually try the advice. If you still have a problem, you can ask for more advice. Figure 22.4 shows a random snapshot of the IRC channels.

Figure 22.4 : A random Snapshot of the IRC Channels.

There are several networks that have arisen to support IRC: EfNet, Undernet, and DALnet. The Perl gurus hang out on EfNet. The #perl IRC channel is a good place to go for general Perl questions. If you have basic questions, you can try #perl-basics. CGI questions should be directed to #cgi.

The Windows 95 program mIRC has been included on the CD that accompanies this book. Install it and try connecting to one of the EfNet servers. I like to use irc.cris.com. Once connected-keep trying; it may take a few tries-type /join #perl and say hello to everyone. You might even see me-my nickname is WasWaldo.

Summary

You've finally reached the end of the journey that was mentioned in Chapter 1 "Getting Your Feet Wet." I hope you enjoyed reading this book as much as I enjoyed writing it. While I was doing research, I took advantage of every resource listed in this chapter. If you have unanswered questions, I urge you to ask them either in IRC or the relevant newsgroup. With today's fast communications it doesn't make sense to hold up a project when the answer might be available in minutes or hours.

The easiest resource to use is the Usenet newsgroups. Simply send a message to an appropriate newsgroup with a carefully worded subject line before you leave work for the evening. The odds are good that you will have a response by the next morning. Most of time you should use the comp.lang.perl.misc newsgroup.

When you have some unruly code that should work but doesn't, consider looking on the Perl home page (http://www.perl.com) to see if a new bug has been found.

If you need ideas or would like to get a head start on your next programming project, you can search for Perl programs at the Yahoo (http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Perl/) Web site. By starting at the Yahoo site, you always see an updated list of available Perl resources. Some sites (like Dale Dewley's-http://www.engr.iupui.edu/~dbewley/perl/) has resources that you will refer to over and over again.

Sometimes, you absolutely can't wait for an answer. When you have pressing deadlines or your brain is frazzled, turn to the #perl channel on an Efnet IRC server.

At this point there's nothing left to say but...
Happy Programing!