| 1 | =head1 NAME |
| 2 | |
| 3 | perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.31 $, $Date: 1999/04/14 03:46:19 $) |
| 4 | |
| 5 | =head1 DESCRIPTION |
| 6 | |
| 7 | This section of the FAQ answers questions about where to find |
| 8 | source and documentation for Perl, support, and |
| 9 | related matters. |
| 10 | |
| 11 | =head2 What machines support Perl? Where do I get it? |
| 12 | |
| 13 | The standard release of Perl (the one maintained by the perl |
| 14 | development team) is distributed only in source code form. You |
| 15 | can find this at http://www.perl.com/CPAN/src/latest.tar.gz , which |
| 16 | in standard Internet format (a gzipped archive in POSIX tar format). |
| 17 | |
| 18 | Perl builds and runs on a bewildering number of platforms. Virtually |
| 19 | all known and current Unix derivatives are supported (Perl's native |
| 20 | platform), as are other systems like VMS, DOS, OS/2, Windows, |
| 21 | QNX, BeOS, and the Amiga. There are also the beginnings of support |
| 22 | for MPE/iX. |
| 23 | |
| 24 | Binary distributions for some proprietary platforms, including |
| 25 | Apple systems, can be found http://www.perl.com/CPAN/ports/ directory. |
| 26 | Because these are not part of the standard distribution, they may |
| 27 | and in fact do differ from the base Perl port in a variety of ways. |
| 28 | You'll have to check their respective release notes to see just |
| 29 | what the differences are. These differences can be either positive |
| 30 | (e.g. extensions for the features of the particular platform that |
| 31 | are not supported in the source release of perl) or negative (e.g. |
| 32 | might be based upon a less current source release of perl). |
| 33 | |
| 34 | =head2 How can I get a binary version of Perl? |
| 35 | |
| 36 | If you don't have a C compiler because your vendor for whatever |
| 37 | reasons did not include one with your system, the best thing to do is |
| 38 | grab a binary version of gcc from the net and use that to compile perl |
| 39 | with. CPAN only has binaries for systems that are terribly hard to |
| 40 | get free compilers for, not for Unix systems. |
| 41 | |
| 42 | Some URLs that might help you are: |
| 43 | |
| 44 | http://language.perl.com/info/software.html |
| 45 | http://www.perl.com/latest/ |
| 46 | http://www.perl.com/CPAN/ports/ |
| 47 | |
| 48 | Someone looking for a Perl for Win16 might look to Laszlo Molnar's djgpp |
| 49 | port in http://www.perl.com/CPAN/ports/msdos/ , which comes with clear |
| 50 | installation instructions. A simple installation guide for MS-DOS using |
| 51 | Ilya Zakharevich's OS/2 port is available at |
| 52 | http://www.cs.ruu.nl/%7Epiet/perl5dos.html |
| 53 | and similarly for Windows 3.1 at http://www.cs.ruu.nl/%7Epiet/perlwin3.html . |
| 54 | |
| 55 | =head2 I don't have a C compiler on my system. How can I compile perl? |
| 56 | |
| 57 | Since you don't have a C compiler, you're doomed and your vendor |
| 58 | should be sacrificed to the Sun gods. But that doesn't help you. |
| 59 | |
| 60 | What you need to do is get a binary version of gcc for your system |
| 61 | first. Consult the Usenet FAQs for your operating system for |
| 62 | information on where to get such a binary version. |
| 63 | |
| 64 | =head2 I copied the Perl binary from one machine to another, but scripts don't work. |
| 65 | |
| 66 | That's probably because you forgot libraries, or library paths differ. |
| 67 | You really should build the whole distribution on the machine it will |
| 68 | eventually live on, and then type C<make install>. Most other |
| 69 | approaches are doomed to failure. |
| 70 | |
| 71 | One simple way to check that things are in the right place is to print out |
| 72 | the hard-coded @INC which perl is looking for. |
| 73 | |
| 74 | % perl -e 'print join("\n",@INC)' |
| 75 | |
| 76 | If this command lists any paths which don't exist on your system, then you |
| 77 | may need to move the appropriate libraries to these locations, or create |
| 78 | symbolic links, aliases, or shortcuts appropriately. @INC is also printed as |
| 79 | part of the output of |
| 80 | |
| 81 | % perl -V |
| 82 | |
| 83 | You might also want to check out L<perlfaq8/"How do I keep my own |
| 84 | module/library directory?">. |
| 85 | |
| 86 | =head2 I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work? |
| 87 | |
| 88 | Read the F<INSTALL> file, which is part of the source distribution. |
| 89 | It describes in detail how to cope with most idiosyncrasies that the |
| 90 | Configure script can't work around for any given system or |
| 91 | architecture. |
| 92 | |
| 93 | =head2 What modules and extensions are available for Perl? What is CPAN? What does CPAN/src/... mean? |
| 94 | |
| 95 | CPAN stands for Comprehensive Perl Archive Network, a huge archive |
| 96 | replicated on dozens of machines all over the world. CPAN contains |
| 97 | source code, non-native ports, documentation, scripts, and many |
| 98 | third-party modules and extensions, designed for everything from |
| 99 | commercial database interfaces to keyboard/screen control to web |
| 100 | walking and CGI scripts. The master machine for CPAN is |
| 101 | ftp://ftp.funet.fi/pub/languages/perl/CPAN/, but you can use the |
| 102 | address http://www.perl.com/CPAN/CPAN.html to fetch a copy from a |
| 103 | "site near you". See http://www.perl.com/CPAN (without a slash at the |
| 104 | end) for how this process works. |
| 105 | |
| 106 | CPAN/path/... is a naming convention for files available on CPAN |
| 107 | sites. CPAN indicates the base directory of a CPAN mirror, and the |
| 108 | rest of the path is the path from that directory to the file. For |
| 109 | instance, if you're using ftp://ftp.funet.fi/pub/languages/perl/CPAN |
| 110 | as your CPAN site, the file CPAN/misc/japh file is downloadable as |
| 111 | ftp://ftp.funet.fi/pub/languages/perl/CPAN/misc/japh . |
| 112 | |
| 113 | Considering that there are hundreds of existing modules in the |
| 114 | archive, one probably exists to do nearly anything you can think of. |
| 115 | Current categories under CPAN/modules/by-category/ include Perl core |
| 116 | modules; development support; operating system interfaces; networking, |
| 117 | devices, and interprocess communication; data type utilities; database |
| 118 | interfaces; user interfaces; interfaces to other languages; filenames, |
| 119 | file systems, and file locking; internationalization and locale; world |
| 120 | wide web support; server and daemon utilities; archiving and |
| 121 | compression; image manipulation; mail and news; control flow |
| 122 | utilities; filehandle and I/O; Microsoft Windows modules; and |
| 123 | miscellaneous modules. |
| 124 | |
| 125 | =head2 Is there an ISO or ANSI certified version of Perl? |
| 126 | |
| 127 | Certainly not. Larry expects that he'll be certified before Perl is. |
| 128 | |
| 129 | =head2 Where can I get information on Perl? |
| 130 | |
| 131 | The complete Perl documentation is available with the Perl distribution. |
| 132 | If you have Perl installed locally, you probably have the documentation |
| 133 | installed as well: type C<man perl> if you're on a system resembling Unix. |
| 134 | This will lead you to other important man pages, including how to set your |
| 135 | $MANPATH. If you're not on a Unix system, access to the documentation |
| 136 | will be different; for example, it might be only in HTML format. But all |
| 137 | proper Perl installations have fully-accessible documentation. |
| 138 | |
| 139 | You might also try C<perldoc perl> in case your system doesn't |
| 140 | have a proper man command, or it's been misinstalled. If that doesn't |
| 141 | work, try looking in /usr/local/lib/perl5/pod for documentation. |
| 142 | |
| 143 | If all else fails, consult the CPAN/doc directory, which contains the |
| 144 | complete documentation in various formats, including native pod, |
| 145 | troff, html, and plain text. There's also a web page at |
| 146 | http://www.perl.com/perl/info/documentation.html that might help. |
| 147 | |
| 148 | Many good books have been written about Perl -- see the section below |
| 149 | for more details. |
| 150 | |
| 151 | Tutorial documents are included in current or upcoming Perl releases |
| 152 | include L<perltoot> for objects, L<perlopentut> for file opening |
| 153 | semantics, L<perlreftut> for managing references, and L<perlxstut> |
| 154 | for linking C and Perl together. There may be more by the |
| 155 | time you read this. The following URLs might also be of |
| 156 | assistance: |
| 157 | |
| 158 | http://language.perl.com/info/documentation.html |
| 159 | http://reference.perl.com/query.cgi?tutorials |
| 160 | |
| 161 | =head2 What are the Perl newsgroups on Usenet? Where do I post questions? |
| 162 | |
| 163 | The now defunct comp.lang.perl newsgroup has been superseded by the |
| 164 | following groups: |
| 165 | |
| 166 | comp.lang.perl.announce Moderated announcement group |
| 167 | comp.lang.perl.misc Very busy group about Perl in general |
| 168 | comp.lang.perl.moderated Moderated discussion group |
| 169 | comp.lang.perl.modules Use and development of Perl modules |
| 170 | comp.lang.perl.tk Using Tk (and X) from Perl |
| 171 | |
| 172 | comp.infosystems.www.authoring.cgi Writing CGI scripts for the Web. |
| 173 | |
| 174 | There is also Usenet gateway to the mailing list used by the crack |
| 175 | Perl development team (perl5-porters) at |
| 176 | news://news.perl.com/perl.porters-gw/ . |
| 177 | |
| 178 | =head2 Where should I post source code? |
| 179 | |
| 180 | You should post source code to whichever group is most appropriate, but |
| 181 | feel free to cross-post to comp.lang.perl.misc. If you want to cross-post |
| 182 | to alt.sources, please make sure it follows their posting standards, |
| 183 | including setting the Followup-To header line to NOT include alt.sources; |
| 184 | see their FAQ (http://www.faqs.org/faqs/alt-sources-intro/) for details. |
| 185 | |
| 186 | If you're just looking for software, first use AltaVista |
| 187 | (http://www.altavista.com), Deja (http://www.deja.com), and |
| 188 | search CPAN. This is faster and more productive than just posting |
| 189 | a request. |
| 190 | |
| 191 | =head2 Perl Books |
| 192 | |
| 193 | A number of books on Perl and/or CGI programming are available. A few of |
| 194 | these are good, some are OK, but many aren't worth your money. Tom |
| 195 | Christiansen maintains a list of these books, some with extensive |
| 196 | reviews, at http://www.perl.com/perl/critiques/index.html. |
| 197 | |
| 198 | The incontestably definitive reference book on Perl, written by |
| 199 | the creator of Perl, is now in its second edition: |
| 200 | |
| 201 | Programming Perl (the "Camel Book"): |
| 202 | by Larry Wall, Tom Christiansen, and Randal Schwartz |
| 203 | ISBN 1-56592-149-6 (English) |
| 204 | ISBN 4-89052-384-7 (Japanese) |
| 205 | URL: http://www.oreilly.com/catalog/pperl2/ |
| 206 | (French, German, Italian, and Hungarian translations also |
| 207 | available) |
| 208 | |
| 209 | The companion volume to the Camel containing thousands |
| 210 | of real-world examples, mini-tutorials, and complete programs |
| 211 | (first premiering at the 1998 Perl Conference), is: |
| 212 | |
| 213 | The Perl Cookbook (the "Ram Book"): |
| 214 | by Tom Christiansen and Nathan Torkington, |
| 215 | with Foreword by Larry Wall |
| 216 | ISBN: 1-56592-243-3 |
| 217 | URL: http://perl.oreilly.com/cookbook/ |
| 218 | |
| 219 | If you're already a hard-core systems programmer, then the Camel Book |
| 220 | might suffice for you to learn Perl from. But if you're not, check |
| 221 | out: |
| 222 | |
| 223 | Learning Perl (the "Llama Book"): |
| 224 | by Randal Schwartz and Tom Christiansen |
| 225 | with Foreword by Larry Wall |
| 226 | ISBN: 1-56592-284-0 |
| 227 | URL: http://www.oreilly.com/catalog/lperl2/ |
| 228 | |
| 229 | Despite the picture at the URL above, the second edition of "Llama |
| 230 | Book" really has a blue cover, and is updated for the 5.004 release |
| 231 | of Perl. Various foreign language editions are available, including |
| 232 | I<Learning Perl on Win32 Systems> (the Gecko Book). |
| 233 | |
| 234 | If you're not an accidental programmer, but a more serious and possibly |
| 235 | even degreed computer scientist who doesn't need as much hand-holding as |
| 236 | we try to provide in the Llama or its defurred cousin the Gecko, please |
| 237 | check out the delightful book, I<Perl: The Programmer's Companion>, |
| 238 | written by Nigel Chapman. |
| 239 | |
| 240 | You can order O'Reilly books directly from O'Reilly & Associates, |
| 241 | 1-800-998-9938. Local/overseas is 1-707-829-0515. If you can |
| 242 | locate an O'Reilly order form, you can also fax to 1-707-829-0104. |
| 243 | See http://www.ora.com/ on the Web. |
| 244 | |
| 245 | What follows is a list of the books that the FAQ authors found personally |
| 246 | useful. Your mileage may (but, we hope, probably won't) vary. |
| 247 | |
| 248 | Recommended books on (or mostly on) Perl follow; those marked with |
| 249 | a star may be ordered from O'Reilly. |
| 250 | |
| 251 | =over |
| 252 | |
| 253 | =item References |
| 254 | |
| 255 | *Programming Perl |
| 256 | by Larry Wall, Tom Christiansen, and Randal L. Schwartz |
| 257 | |
| 258 | *Perl 5 Desktop Reference |
| 259 | by Johan Vromans |
| 260 | |
| 261 | *Perl in a Nutshell |
| 262 | by Ellen Siever, Stephan Spainhour, and Nathan Patwardhan |
| 263 | |
| 264 | =item Tutorials |
| 265 | |
| 266 | *Learning Perl [2nd edition] |
| 267 | by Randal L. Schwartz and Tom Christiansen |
| 268 | with foreword by Larry Wall |
| 269 | |
| 270 | *Learning Perl on Win32 Systems |
| 271 | by Randal L. Schwartz, Erik Olson, and Tom Christiansen, |
| 272 | with foreword by Larry Wall |
| 273 | |
| 274 | Perl: The Programmer's Companion |
| 275 | by Nigel Chapman |
| 276 | |
| 277 | Cross-Platform Perl |
| 278 | by Eric F. Johnson |
| 279 | |
| 280 | MacPerl: Power and Ease |
| 281 | by Vicki Brown and Chris Nandor, foreword by Matthias Neeracher |
| 282 | |
| 283 | =item Task-Oriented |
| 284 | |
| 285 | *The Perl Cookbook |
| 286 | by Tom Christiansen and Nathan Torkington |
| 287 | with foreword by Larry Wall |
| 288 | |
| 289 | Perl5 Interactive Course [2nd edition] |
| 290 | by Jon Orwant |
| 291 | |
| 292 | *Advanced Perl Programming |
| 293 | by Sriram Srinivasan |
| 294 | |
| 295 | Effective Perl Programming |
| 296 | by Joseph Hall |
| 297 | |
| 298 | =item Special Topics |
| 299 | |
| 300 | *Mastering Regular Expressions |
| 301 | by Jeffrey Friedl |
| 302 | |
| 303 | How to Set up and Maintain a World Wide Web Site [2nd edition] |
| 304 | by Lincoln Stein |
| 305 | |
| 306 | *Learning Perl/Tk |
| 307 | by Nancy Walsh |
| 308 | |
| 309 | =back |
| 310 | |
| 311 | =head2 Perl in Magazines |
| 312 | |
| 313 | The first and only periodical devoted to All Things Perl, I<The |
| 314 | Perl Journal> contains tutorials, demonstrations, case studies, |
| 315 | announcements, contests, and much more. TPJ has columns on web |
| 316 | development, databases, Win32 Perl, graphical programming, regular |
| 317 | expressions, and networking, and sponsors the Obfuscated Perl |
| 318 | Contest. It is published quarterly under the gentle hand of its |
| 319 | editor, Jon Orwant. See http://www.tpj.com/ or send mail to |
| 320 | subscriptions@tpj.com . |
| 321 | |
| 322 | Beyond this, magazines that frequently carry high-quality articles |
| 323 | on Perl are I<Web Techniques> (see http://www.webtechniques.com/), |
| 324 | I<Performance Computing> (http://www.performance-computing.com/), and Usenix's |
| 325 | newsletter/magazine to its members, I<login:>, at http://www.usenix.org/. |
| 326 | Randal's Web Technique's columns are available on the web at |
| 327 | http://www.stonehenge.com/merlyn/WebTechniques/. |
| 328 | |
| 329 | =head2 Perl on the Net: FTP and WWW Access |
| 330 | |
| 331 | To get the best (and possibly cheapest) performance, pick a site from |
| 332 | the list below and use it to grab the complete list of mirror sites. |
| 333 | From there you can find the quickest site for you. Remember, the |
| 334 | following list is I<not> the complete list of CPAN mirrors. |
| 335 | |
| 336 | http://www.perl.com/CPAN-local |
| 337 | http://www.perl.com/CPAN (redirects to an ftp mirror) |
| 338 | http://www.perl.org/CPAN |
| 339 | ftp://ftp.funet.fi/pub/languages/perl/CPAN/ |
| 340 | http://www.cs.ruu.nl/pub/PERL/CPAN/ |
| 341 | ftp://ftp.cs.colorado.edu/pub/perl/CPAN/ |
| 342 | |
| 343 | =head2 What mailing lists are there for Perl? |
| 344 | |
| 345 | Most of the major modules (Tk, CGI, libwww-perl) have their own |
| 346 | mailing lists. Consult the documentation that came with the module for |
| 347 | subscription information. The Perl Institute attempts to maintain a |
| 348 | list of mailing lists at: |
| 349 | |
| 350 | http://www.perl.org/maillist.html |
| 351 | |
| 352 | =head2 Archives of comp.lang.perl.misc |
| 353 | |
| 354 | Have you tried Deja or AltaVista? Those are the |
| 355 | best archives. Just look up "*perl*" as a newsgroup. |
| 356 | |
| 357 | http://www.deja.com/dnquery.xp?QRY=&DBS=2&ST=PS&defaultOp=AND&LNG=ALL&format=terse&showsort=date&maxhits=25&subjects=&groups=*perl*&authors=&fromdate=&todate= |
| 358 | |
| 359 | You'll probably want to trim that down a bit, though. |
| 360 | |
| 361 | ftp.cis.ufl.edu:/pub/perl/comp.lang.perl.*/monthly has an almost |
| 362 | complete collection dating back to 12/89 (missing 08/91 through |
| 363 | 12/93). They are kept as one large file for each month. |
| 364 | |
| 365 | You'll probably want more a sophisticated query and retrieval mechanism |
| 366 | than a file listing, preferably one that allows you to retrieve |
| 367 | articles using a fast-access indices, keyed on at least author, date, |
| 368 | subject, thread (as in "trn") and probably keywords. The best |
| 369 | solution the FAQ authors know of is the MH pick command, but it is |
| 370 | very slow to select on 18000 articles. |
| 371 | |
| 372 | If you have, or know where can be found, the missing sections, please |
| 373 | let perlfaq-suggestions@perl.com know. |
| 374 | |
| 375 | =head2 Where can I buy a commercial version of Perl? |
| 376 | |
| 377 | In a real sense, Perl already I<is> commercial software: It has a license |
| 378 | that you can grab and carefully read to your manager. It is distributed |
| 379 | in releases and comes in well-defined packages. There is a very large |
| 380 | user community and an extensive literature. The comp.lang.perl.* |
| 381 | newsgroups and several of the mailing lists provide free answers to your |
| 382 | questions in near real-time. Perl has traditionally been supported by |
| 383 | Larry, scores of software designers and developers, and myriads of |
| 384 | programmers, all working for free to create a useful thing to make life |
| 385 | better for everyone. |
| 386 | |
| 387 | However, these answers may not suffice for managers who require a |
| 388 | purchase order from a company whom they can sue should anything go awry. |
| 389 | Or maybe they need very serious hand-holding and contractual obligations. |
| 390 | Shrink-wrapped CDs with Perl on them are available from several sources if |
| 391 | that will help. For example, many Perl books carry a Perl distribution |
| 392 | on them, as do the O'Reilly Perl Resource Kits (in both the Unix flavor |
| 393 | and in the proprietary Microsoft flavor); the free Unix distributions |
| 394 | also all come with Perl. |
| 395 | |
| 396 | Or you can purchase a real support contract. Although Cygnus historically |
| 397 | provided this service, they no longer sell support contracts for Perl. |
| 398 | Instead, the Paul Ingram Group will be taking up the slack through The |
| 399 | Perl Clinic. The following is a commercial from them: |
| 400 | |
| 401 | "Do you need professional support for Perl and/or Oraperl? Do you need |
| 402 | a support contract with defined levels of service? Do you want to pay |
| 403 | only for what you need? |
| 404 | |
| 405 | "The Paul Ingram Group has provided quality software development and |
| 406 | support services to some of the world's largest corporations for ten |
| 407 | years. We are now offering the same quality support services for Perl |
| 408 | at The Perl Clinic. This service is led by Tim Bunce, an active perl |
| 409 | porter since 1994 and well known as the author and maintainer of the |
| 410 | DBI, DBD::Oracle, and Oraperl modules and author/co-maintainer of The |
| 411 | Perl 5 Module List. We also offer Oracle users support for Perl5 |
| 412 | Oraperl and related modules (which Oracle is planning to ship as part |
| 413 | of Oracle Web Server 3). 20% of the profit from our Perl support work |
| 414 | will be donated to The Perl Institute." |
| 415 | |
| 416 | For more information, contact The Perl Clinic: |
| 417 | |
| 418 | Tel: +44 1483 424424 |
| 419 | Fax: +44 1483 419419 |
| 420 | Web: http://www.perl.co.uk/ |
| 421 | Email: perl-support-info@perl.co.uk or Tim.Bunce@ig.co.uk |
| 422 | |
| 423 | See also www.perl.com for updates on tutorials, training, and support. |
| 424 | |
| 425 | =head2 Where do I send bug reports? |
| 426 | |
| 427 | If you are reporting a bug in the perl interpreter or the modules |
| 428 | shipped with Perl, use the I<perlbug> program in the Perl distribution or |
| 429 | mail your report to perlbug@perl.com . |
| 430 | |
| 431 | If you are posting a bug with a non-standard port (see the answer to |
| 432 | "What platforms is Perl available for?"), a binary distribution, or a |
| 433 | non-standard module (such as Tk, CGI, etc), then please see the |
| 434 | documentation that came with it to determine the correct place to post |
| 435 | bugs. |
| 436 | |
| 437 | Read the perlbug(1) man page (perl5.004 or later) for more information. |
| 438 | |
| 439 | =head2 What is perl.com? |
| 440 | |
| 441 | The perl.com domain is owned by Tom Christiansen, who created it as a |
| 442 | public service long before perl.org came about. Despite the name, it's a |
| 443 | pretty non-commercial site meant to be a clearinghouse for information |
| 444 | about all things Perlian, accepting no paid advertisements, bouncy |
| 445 | happy GIFs, or silly Java applets on its pages. The Perl Home Page at |
| 446 | http://www.perl.com/ is currently hosted on a T3 line courtesy of Songline |
| 447 | Systems, a software-oriented subsidiary of O'Reilly and Associates. |
| 448 | Other starting points include |
| 449 | |
| 450 | http://language.perl.com/ |
| 451 | http://conference.perl.com/ |
| 452 | http://reference.perl.com/ |
| 453 | |
| 454 | =head1 AUTHOR AND COPYRIGHT |
| 455 | |
| 456 | Copyright (c) 1997-1999 Tom Christiansen and Nathan Torkington. |
| 457 | All rights reserved. |
| 458 | |
| 459 | When included as an integrated part of the Standard Distribution |
| 460 | of Perl or of its documentation (printed or otherwise), this works is |
| 461 | covered under Perl's Artistic License. For separate distributions of |
| 462 | all or part of this FAQ outside of that, see L<perlfaq>. |
| 463 | |
| 464 | Irrespective of its distribution, all code examples here are in the public |
| 465 | domain. You are permitted and encouraged to use this code and any |
| 466 | derivatives thereof in your own programs for fun or for profit as you |
| 467 | see fit. A simple comment in the code giving credit to the FAQ would |
| 468 | be courteous but is not required. |