Introduction | p. xiii |
Acknowledgments | p. xvii |
Introduction to Perl Modules | p. 1 |
Introduction | p. 1 |
Getting Perl Modules from the CPAN | p. 2 |
Installing Perl Modules | p. 2 |
Manual Installation on UNIX | p. 3 |
Manual Installation on Windows | p. 3 |
Automated Installation on UNIX using the CPAN Module | p. 4 |
Automated Installation on Windows using PPM | p. 5 |
Installation on Other Operating Systems | p. 6 |
Installing Modules to a Private Directory | p. 6 |
Using Perl Modules | p. 7 |
Finding Installed Modules | p. 9 |
Where Are Modules Located? | p. 9 |
Which Modules Are Installed? | p. 10 |
Module Documentation | p. 11 |
Summary | p. 11 |
The Standard Modules | p. 13 |
Overview of the Standard Perl Modules | p. 14 |
Benchmark | p. 21 |
Carp | p. 23 |
Class::Struct | p. 25 |
Config | p. 28 |
config_sh() | p. 28 |
config_vars(@name) | p. 28 |
myconfig() | p. 29 |
Cwd | p. 30 |
Env | p. 31 |
File::Basename | p. 32 |
File::Compare | p. 33 |
File::Copy | p. 34 |
File::Find | p. 35 |
Getopt::Long | p. 36 |
Argument Specifiers | p. 36 |
Option Destination | p. 38 |
Getopt::Std | p. 39 |
IO::File | p. 42 |
Text::Abbrev | p. 44 |
Text::Wrap | p. 45 |
Time::Local | p. 46 |
Time::gmtime | p. 47 |
Time::localtime | p. 48 |
Summary | p. 49 |
Dates and Times | p. 51 |
Overview of Dates and Times | p. 52 |
Date::Calc | p. 52 |
Date::Format | p. 55 |
Date::Manip | p. 58 |
Date::Parse | p. 61 |
Time::HiRes | p. 61 |
Summary | p. 63 |
Databases | p. 65 |
Introduction | p. 66 |
DB_File | p. 66 |
DBI | p. 71 |
Summary | p. 78 |
Graphics | p. 79 |
Graphics | p. 80 |
Finding the Size of an Image | p. 80 |
Finding the Size of an Image with Image::Magick | p. 80 |
Finding the Size of an Image with Image::Size | p. 81 |
Manipulating Images with Image::Magick | p. 83 |
Creating Dynamic Images with GD.pm | p. 84 |
Creating Graphs with GD::Graph | p. 90 |
Summary | p. 95 |
Perl/Tk: Creating Graphical User Interfaces | p. 97 |
Introduction to Perl/Tk | p. 98 |
Brief Overview of Perl/Tk | p. 98 |
Simple Example: Hello World | p. 98 |
Widgets | p. 101 |
Creating the Main Window | p. 102 |
Creating Widgets | p. 102 |
Common Widget Options | p. 104 |
Callbacks and Binding | p. 107 |
Label Widget | p. 109 |
Button | p. 111 |
Checkbutton | p. 112 |
Radiobutton | p. 114 |
Entry | p. 116 |
Text | p. 117 |
Listbox | p. 120 |
Scrollbar | p. 122 |
Scale | p. 125 |
Frame | p. 128 |
Menu | p. 129 |
Geometry Managers | p. 133 |
Pack | p. 134 |
Grid | p. 136 |
Place | p. 137 |
Summary | p. 139 |
E-mail | p. 141 |
Sending E-mail | p. 142 |
Receiving E-mail | p. 145 |
Sending Attachments | p. 149 |
Summary | p. 153 |
Internet Protocols | p. 155 |
Introduction | p. 156 |
DNS Lookups | p. 156 |
Pinging a Host | p. 159 |
Getting Whois Information | p. 160 |
Using FTP in Perl | p. 161 |
Using Telnet in Perl | p. 163 |
Creating a TCP Client | p. 165 |
Creating a TCP Server | p. 166 |
Summary | p. 168 |
CGI.pm | p. 169 |
Overview of CGI.pm | p. 170 |
Interface | p. 170 |
Function-Oriented Interface | p. 170 |
Object-Oriented Interface | p. 172 |
Processing the Form | p. 172 |
Getting the Value(s) of a Single Named Parameter | p. 173 |
Getting the Values of All Parameters | p. 174 |
Generating HTML Output | p. 174 |
Generating Headers | p. 174 |
Generating Standard HTML Elements | p. 177 |
Generating Form Elements | p. 177 |
Cookies | p. 187 |
File Uploads | p. 191 |
Debugging | p. 194 |
Summary | p. 195 |
Fun CGI Applications | p. 197 |
Introduction | p. 198 |
Voting Booth | p. 198 |
Overview | p. 198 |
HTML Form | p. 198 |
Data and Log Files | p. 200 |
CGI Script | p. 201 |
Guestbook | p. 209 |
Postcards | p. 217 |
Chat | p. 229 |
Summary | p. 234 |
CGI and Databases | p. 235 |
Introduction | p. 236 |
Feedback Form | p. 236 |
Resume Submit Form | p. 242 |
Job Board | p. 246 |
CD Database | p. 267 |
Summary | p. 278 |
CGI: Commerce and Community | p. 279 |
Introduction | p. 280 |
Online Computer Store | p. 280 |
Online Forum | p. 293 |
Summary | p. 306 |
Site Administration | p. 307 |
Introduction | p. 308 |
Online HTML Editor | p. 308 |
Parsing Log Files | p. 313 |
htaccess | p. 316 |
Checking Server Ports | p. 322 |
Summary | p. 328 |
Site Utilities | p. 329 |
Introduction | p. 330 |
Site Search | p. 330 |
Searching the Web | p. 332 |
Recommend a Site | p. 336 |
Banner Ad Rotation | p. 341 |
Online Perl Syntax Checker | p. 350 |
Online Notes | p. 353 |
Summary | p. 360 |
Web Programming | p. 361 |
Web Automation with LWP | p. 362 |
Getting Web Documents with LWP::Simple | p. 362 |
Getting Web Documents with LWP::UserAgent | p. 367 |
Getting Protected Documents with LWP:;UserAgent | p. 372 |
Automating Form Submission | p. 372 |
Specifying and Converting URLs with URI::URL | p. 374 |
Specifying URLs | p. 374 |
Converting Relative URLs to Absolute URLs | p. 375 |
Converting Absolute URLs to Relative URLs | p. 376 |
Parsing and Processing HTML | p. 377 |
Parsing HTML with HTML::Parser | p. 377 |
Extracting Links with HTML::LinkExtor | p. 381 |
HTML::Entities | p. 386 |
Summary | p. 387 |
Win32 | p. 389 |
The Win32 Library | p. 390 |
The Win32 Module | p. 390 |
Error Handling | p. 390 |
OS and Build Information | p. 391 |
User, Machine, and Domain Names | p. 392 |
Finding and Changing the Current Working Directory | p. 393 |
File System | p. 394 |
Next Available Drive | p. 396 |
Tick Count | p. 396 |
Message Box | p. 397 |
Processes | p. 398 |
Win32::Spawn | p. 398 |
Win32::Process | p. 399 |
OLE Automation | p. 402 |
Creating and Writing to an Excel Spreadsheet | p. 403 |
Extracting Data from an Excel Spreadsheet | p. 404 |
Creating a Chart with Excel | p. 405 |
Database Access with ODBC | p. 406 |
Using Win32::ODBC | p. 406 |
Film Database Application | p. 408 |
Summary | p. 412 |
XML | p. 413 |
Introduction | p. 414 |
Parsing XML with XML::Parser | p. 414 |
Overview of XML::Parser | p. 414 |
Parsing a Simple XML Document | p. 415 |
Converting XML to Text | p. 417 |
Converting XML to HTML | p. 420 |
XML::RSS | p. 423 |
Overview | p. 423 |
RSS Syntax | p. 423 |
Create an RSS Channel | p. 425 |
Converting RSS to HTML | p. 427 |
Summary | p. 435 |
Pragmas | p. 437 |
Introduction | p. 437 |
constant | p. 439 |
diagnostics | p. 440 |
integer | p. 440 |
lib | p. 441 |
strict | p. 442 |
strict 'refs' | p. 442 |
strict 'vars' | p. 443 |
strict 'subs' | p. 443 |
vars | p. 444 |
Summary | p. 444 |
Creating Perl Modules | p. 445 |
Building Modules the Smart Way | p. 445 |
Module Internals--Functional | p. 447 |
Module Internals--Object Oriented | p. 451 |
Summary | p. 453 |
Perl Security | p. 455 |
Temp File Security | p. 455 |
Using Taint | p. 456 |
Better Coding Practices | p. 457 |
Summary | p. 457 |
Perl Resources | p. 459 |
Online Resources | p. 459 |
CPAN--http://www.cpan.org | p. 459 |
The Official Perl Site--http://www.perl.com | p. 459 |
use Perl--http://use.perl.org | p. 460 |
Perl Mongers--http://www.perl.org | p. 460 |
Perldoc.com--http://www.perldoc.com | p. 460 |
Perl Monks--http://www.perlmonks.com | p. 460 |
Randal Schwartz's Magazine Articles--http://www.stonehenge.com/merlyn/ | p. 460 |
EFNet IRC Channel #perl | p. 460 |
Offline Resources | p. 461 |
POD: Plain Old Documentation | p. 461 |
Manual Pages--man | p. 461 |
The Perl Journal | p. 461 |
Perl Books | p. 462 |
Summary | p. 462 |
Installing the PostgreSQL Database | p. 463 |
Introduction | p. 463 |
Installation from RPM | p. 463 |
Installation from Source | p. 464 |
Initial Database Setup | p. 467 |
Summary | p. 468 |
Installing Apache | p. 469 |
Index | p. 473 |
Table of Contents provided by Syndetics. All Rights Reserved. |