This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
retitle perl5134delta.pod
[perl5.git] / pod / perlfaq2.pod
... / ...
CommitLineData
1=head1 NAME
2
3perlfaq2 - Obtaining and Learning about Perl
4
5=head1 DESCRIPTION
6
7This section of the FAQ answers questions about where to find
8source and documentation for Perl, support, and
9related matters.
10
11=head2 What machines support perl? Where do I get it?
12
13The standard release of perl (the one maintained by the perl
14development team) is distributed only in source code form. You
15can find the latest releases at http://www.cpan.org/src/README.html .
16
17Perl builds and runs on a bewildering number of platforms. Virtually
18all known and current Unix derivatives are supported (perl's native
19platform), as are other systems like VMS, DOS, OS/2, Windows,
20QNX, BeOS, OS X, MPE/iX and the Amiga.
21
22Binary distributions for some proprietary platforms can be found
23http://www.cpan.org/ports/ directory. Because these are not part of
24the standard distribution, they may and in fact do differ from the
25base perl port in a variety of ways. You'll have to check their
26respective release notes to see just what the differences are. These
27differences can be either positive (e.g. extensions for the features
28of the particular platform that are not supported in the source
29release of perl) or negative (e.g. might be based upon a less current
30source release of perl).
31
32=head2 How can I get a binary version of perl?
33
34(contributed by brian d foy)
35
36ActiveState: Windows, Linux, Mac OS X, Solaris, AIX and HP-UX
37
38 http://www.activestate.com/
39
40Sunfreeware.com: Solaris 2.5 to Solaris 10 (SPARC and x86)
41
42 http://www.sunfreeware.com/
43
44Strawberry Perl: Windows, Perl 5.8.8 and 5.10.0
45
46 http://www.strawberryperl.com
47
48IndigoPerl: Windows
49
50 http://indigostar.com/
51
52=head2 I don't have a C compiler. How can I build my own Perl interpreter?
53
54Since you don't have a C compiler, you're doomed and your vendor
55should be sacrificed to the Sun gods. But that doesn't help you.
56
57What you need to do is get a binary version of C<gcc> for your system
58first. Consult the Usenet FAQs for your operating system for
59information on where to get such a binary version.
60
61You might look around the net for a pre-built binary of Perl (or a
62C compiler!) that meets your needs, though:
63
64For Windows, Vanilla Perl ( http://vanillaperl.com/ ) and Strawberry Perl
65( http://strawberryperl.com/ ) come with a
66bundled C compiler. ActivePerl is a pre-compiled version of Perl
67ready-to-use.
68
69For Sun systems, SunFreeware.com provides binaries of most popular
70applications, including compilers and Perl.
71
72=head2 I copied the perl binary from one machine to another, but scripts don't work.
73
74That's probably because you forgot libraries, or library paths differ.
75You really should build the whole distribution on the machine it will
76eventually live on, and then type C<make install>. Most other
77approaches are doomed to failure.
78
79One simple way to check that things are in the right place is to print out
80the hard-coded C<@INC> that perl looks through for libraries:
81
82 % perl -le 'print for @INC'
83
84If this command lists any paths that don't exist on your system, then you
85may need to move the appropriate libraries to these locations, or create
86symbolic links, aliases, or shortcuts appropriately. C<@INC> is also printed as
87part of the output of
88
89 % perl -V
90
91You might also want to check out
92L<perlfaq8/"How do I keep my own module/library directory?">.
93
94=head2 I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
95
96Read the F<INSTALL> file, which is part of the source distribution.
97It describes in detail how to cope with most idiosyncrasies that the
98C<Configure> script can't work around for any given system or
99architecture.
100
101=head2 What modules and extensions are available for Perl? What is CPAN? What does CPAN/src/... mean?
102
103CPAN stands for Comprehensive Perl Archive Network, a multi-gigabyte
104archive replicated on hundreds of machines all over the world. CPAN
105contains source code, non-native ports, documentation, scripts, and
106many third-party modules and extensions, designed for everything from
107commercial database interfaces to keyboard/screen control to web
108walking and CGI scripts. The master web site for CPAN is
109http://www.cpan.org/ and there is the CPAN Multiplexer at
110http://www.cpan.org/CPAN.html which will choose a mirror near you via
111DNS. See http://www.perl.com/CPAN (without a slash at the end) for
112how this process works. Also, http://mirror.cpan.org/ has a nice
113interface to the http://www.cpan.org/MIRRORED.BY mirror directory.
114
115See the CPAN FAQ at http://www.cpan.org/misc/cpan-faq.html for answers
116to the most frequently asked questions about CPAN including how to
117become a mirror.
118
119C<CPAN/path/...> is a naming convention for files available on CPAN
120sites. CPAN indicates the base directory of a CPAN mirror, and the
121rest of the path is the path from that directory to the file. For
122instance, if you're using ftp://ftp.funet.fi/pub/languages/perl/CPAN
123as your CPAN site, the file C<CPAN/misc/japh> is downloadable as
124ftp://ftp.funet.fi/pub/languages/perl/CPAN/misc/japh .
125
126Considering that, as of 2006, there are over ten thousand existing
127modules in the archive, one probably exists to do nearly anything you
128can think of. Current categories under C<CPAN/modules/by-category/>
129include Perl core modules; development support; operating system
130interfaces; networking, devices, and interprocess communication; data
131type utilities; database interfaces; user interfaces; interfaces to
132other languages; filenames, file systems, and file locking;
133internationalization and locale; world wide web support; server and
134daemon utilities; archiving and compression; image manipulation; mail
135and news; control flow utilities; filehandle and I/O; Microsoft
136Windows modules; and miscellaneous modules.
137
138See http://www.cpan.org/modules/00modlist.long.html or
139http://search.cpan.org/ for a more complete list of modules by
140category.
141
142CPAN is a free service and is not affiliated with O'Reilly Media.
143
144=head2 Is there an ISO or ANSI certified version of Perl?
145
146Certainly not. Larry expects that he'll be certified before Perl is.
147
148=head2 Where can I get information on Perl?
149
150The complete Perl documentation is available with the Perl distribution.
151If you have Perl installed locally, you probably have the documentation
152installed as well: type C<man perl> if you're on a system resembling Unix.
153This will lead you to other important man pages, including how to set your
154C<$MANPATH>. If you're not on a Unix system, access to the documentation
155will be different; for example, documentation might only be in HTML format. All
156proper perl installations have fully-accessible documentation.
157
158You might also try C<perldoc perl> in case your system doesn't
159have a proper C<man> command, or it's been misinstalled. If that doesn't
160work, try looking in C</usr/local/lib/perl5/pod> for documentation.
161
162If all else fails, consult http://perldoc.perl.org/ which has the
163complete documentation in HTML and PDF format.
164
165Many good books have been written about Perl--see the section later in
166L<perlfaq2> for more details.
167
168Tutorial documents are included in current or upcoming Perl releases
169include L<perltoot> for objects or L<perlboot> for a beginner's
170approach to objects, L<perlopentut> for file opening semantics,
171L<perlreftut> for managing references, L<perlretut> for regular
172expressions, L<perlthrtut> for threads, L<perldebtut> for debugging,
173and L<perlxstut> for linking C and Perl together. There may be more
174by the time you read this. These URLs might also be useful:
175
176 http://perldoc.perl.org/
177 http://bookmarks.cpan.org/search.cgi?cat=Training%2FTutorials
178
179=head2 What are the Perl newsgroups on Usenet? Where do I post questions?
180
181Several groups devoted to the Perl language are on Usenet:
182
183 comp.lang.perl.announce Moderated announcement group
184 comp.lang.perl.misc High traffic general Perl discussion
185 comp.lang.perl.moderated Moderated discussion group
186 comp.lang.perl.modules Use and development of Perl modules
187 comp.lang.perl.tk Using Tk (and X) from Perl
188
189Some years ago, comp.lang.perl was divided into those groups, and
190comp.lang.perl itself officially removed. While that group may still
191be found on some news servers, it is unwise to use it, because
192postings there will not appear on news servers which honour the
193official list of group names. Use comp.lang.perl.misc for topics
194which do not have a more-appropriate specific group.
195
196There is also a Usenet gateway to Perl mailing lists sponsored by
197perl.org at nntp://nntp.perl.org , a web interface to the same lists
198at http://nntp.perl.org/group/ and these lists are also available
199under the C<perl.*> hierarchy at http://groups.google.com . Other
200groups are listed at http://lists.perl.org/ ( also known as
201http://lists.cpan.org/ ).
202
203A nice place to ask questions is the PerlMonks site,
204http://www.perlmonks.org/ , or the Perl Beginners mailing list
205http://lists.perl.org/showlist.cgi?name=beginners .
206
207Note that none of the above are supposed to write your code for you:
208asking questions about particular problems or general advice is fine,
209but asking someone to write your code for free is not very cool.
210
211=head2 Where should I post source code?
212
213You should post source code to whichever group is most appropriate, but
214feel free to cross-post to comp.lang.perl.misc. If you want to cross-post
215to alt.sources, please make sure it follows their posting standards,
216including setting the Followup-To header line to NOT include alt.sources;
217see their FAQ ( http://www.faqs.org/faqs/alt-sources-intro/ ) for details.
218
219If you're just looking for software, first use Google
220( http://www.google.com ), Google's Usenet search interface
221( http://groups.google.com ), and CPAN Search ( http://search.cpan.org ).
222This is faster and more productive than just posting a request.
223
224=head2 Perl Books
225
226A number of books on Perl and/or CGI programming are available. A few
227of these are good, some are OK, but many aren't worth your money.
228There is a list of these books, some with extensive reviews, at
229http://books.perl.org/ . If you don't see your book listed here, you
230can write to perlfaq-workers@perl.org .
231
232The incontestably definitive reference book on Perl, written by
233the creator of Perl, is Programming Perl:
234
235 Programming Perl (the "Camel Book"):
236 by Larry Wall, Tom Christiansen, and Jon Orwant
237 ISBN 0-596-00027-8 [3rd edition July 2000]
238 http://www.oreilly.com/catalog/pperl3/
239 (English, translations to several languages are also available)
240
241The companion volume to the Camel containing thousands
242of real-world examples, mini-tutorials, and complete programs is:
243
244 The Perl Cookbook (the "Ram Book"):
245 by Tom Christiansen and Nathan Torkington,
246 with Foreword by Larry Wall
247 ISBN 0-596-00313-7 [2nd Edition August 2003]
248 http://www.oreilly.com/catalog/perlckbk2/
249
250If you're already a seasoned programmer, then the Camel Book might
251suffice for you to learn Perl. If you're not, check out the
252Llama book:
253
254 Learning Perl
255 by Randal L. Schwartz, Tom Phoenix, and brian d foy
256 ISBN 0-596-10105-8 [4th edition July 2005]
257 http://www.oreilly.com/catalog/learnperl4/
258
259And for more advanced information on writing larger programs,
260presented in the same style as the Llama book, continue your education
261with the Alpaca book:
262
263 Intermediate Perl (the "Alpaca Book")
264 by Randal L. Schwartz and brian d foy, with Tom Phoenix (foreword by Damian Conway)
265 ISBN 0-596-10206-2 [1st edition March 2006]
266 http://www.oreilly.com/catalog/lrnperlorm/
267
268Addison-Wesley ( http://www.awlonline.com/ ) and Manning
269( http://www.manning.com/ ) are also publishers of some fine Perl books
270such as I<Object Oriented Programming with Perl> by Damian Conway and
271I<Network Programming with Perl> by Lincoln Stein.
272
273An excellent technical book discounter is Bookpool at
274http://www.bookpool.com/ where a 30% discount or more is not unusual.
275
276What follows is a list of the books that the FAQ authors found personally
277useful. Your mileage may (but, we hope, probably won't) vary.
278
279Recommended books on (or mostly on) Perl follow.
280
281=over 4
282
283=item References
284
285 Programming Perl
286 by Larry Wall, Tom Christiansen, and Jon Orwant
287 ISBN 0-596-00027-8 [3rd edition July 2000]
288 http://www.oreilly.com/catalog/pperl3/
289
290 Perl 5 Pocket Reference
291 by Johan Vromans
292 ISBN 0-596-00374-9 [4th edition July 2002]
293 http://www.oreilly.com/catalog/perlpr4/
294
295=item Tutorials
296
297 Beginning Perl
298 by James Lee
299 ISBN 1-59059-391-X [2nd edition August 2004]
300 http://apress.com/book/bookDisplay.html?bID=344
301
302 Elements of Programming with Perl
303 by Andrew L. Johnson
304 ISBN 1-884777-80-5 [1st edition October 1999]
305 http://www.manning.com/johnson/
306
307 Learning Perl
308 by Randal L. Schwartz, Tom Phoenix, and brian d foy
309 ISBN 0-596-52010-7 [5th edition June 2008]
310 http://oreilly.com/catalog/9780596520106/
311
312 Intermediate Perl (the "Alpaca Book")
313 by Randal L. Schwartz and brian d foy, with Tom Phoenix (foreword by Damian Conway)
314 ISBN 0-596-10206-2 [1st edition March 2006]
315 http://www.oreilly.com/catalog/intermediateperl/
316
317 Mastering Perl
318 by brian d foy
319 ISBN 0-596-52724-1 [1st edition July 2007]
320 http://www.oreilly.com/catalog/9780596527242/
321
322=item Task-Oriented
323
324 Writing Perl Modules for CPAN
325 by Sam Tregar
326 ISBN 1-59059-018-X [1st edition August 2002]
327 http://apress.com/book/bookDisplay.html?bID=14
328
329 The Perl Cookbook
330 by Tom Christiansen and Nathan Torkington
331 with foreword by Larry Wall
332 ISBN 1-56592-243-3 [1st edition August 1998]
333 http://www.oreilly.com/catalog/cookbook/
334
335 Effective Perl Programming
336 by Joseph Hall
337 ISBN 0-201-41975-0 [1st edition 1998]
338 http://www.awl.com/
339
340 Real World SQL Server Administration with Perl
341 by Linchi Shea
342 ISBN 1-59059-097-X [1st edition July 2003]
343 http://apress.com/book/bookDisplay.html?bID=171
344
345=item Special Topics
346
347 Perl Best Practices
348 by Damian Conway
349 ISBN: 0-596-00173-8 [1st edition July 2005]
350 http://www.oreilly.com/catalog/perlbp/
351
352 Higher Order Perl
353 by Mark-Jason Dominus
354 ISBN: 1558607013 [1st edition March 2005]
355 http://hop.perl.plover.com/
356
357 Perl 6 Now: The Core Ideas Illustrated with Perl 5
358 by Scott Walters
359 ISBN 1-59059-395-2 [1st edition December 2004]
360 http://apress.com/book/bookDisplay.html?bID=355
361
362 Mastering Regular Expressions
363 by Jeffrey E. F. Friedl
364 ISBN 0-596-00289-0 [2nd edition July 2002]
365 http://www.oreilly.com/catalog/regex2/
366
367 Network Programming with Perl
368 by Lincoln Stein
369 ISBN 0-201-61571-1 [1st edition 2001]
370 http://www.awlonline.com/
371
372 Object Oriented Perl
373 by Damian Conway
374 with foreword by Randal L. Schwartz
375 ISBN 1-884777-79-1 [1st edition August 1999]
376 http://www.manning.com/conway/
377
378 Data Munging with Perl
379 by Dave Cross
380 ISBN 1-930110-00-6 [1st edition 2001]
381 http://www.manning.com/cross
382
383 Mastering Perl/Tk
384 by Steve Lidie and Nancy Walsh
385 ISBN 1-56592-716-8 [1st edition January 2002]
386 http://www.oreilly.com/catalog/mastperltk/
387
388 Extending and Embedding Perl
389 by Tim Jenness and Simon Cozens
390 ISBN 1-930110-82-0 [1st edition August 2002]
391 http://www.manning.com/jenness
392
393 Perl Debugger Pocket Reference
394 by Richard Foley
395 ISBN 0-596-00503-2 [1st edition January 2004]
396 http://www.oreilly.com/catalog/perldebugpr/
397
398 Pro Perl Debugging
399 by Richard Foley with Andy Lester
400 ISBN 1-59059-454-1 [1st edition July 2005]
401 http://www.apress.com/book/view/1590594541
402
403=back
404
405=head2 Which magazines have Perl content?
406
407I<The Perl Review> ( http://www.theperlreview.com ) focuses on Perl
408almost completely (although it sometimes sneaks in an article about
409another language). There's also I<$foo Magazin>, a german magazine
410dedicated to Perl, at ( http://www.foo-magazin.de ).
411
412The I<Perl-Zeitung> is a German-speaking magazine for Perl beginners
413(see http://perl-zeitung.at.tf ).
414
415Magazines that frequently carry quality articles on Perl include I<The
416Perl Review> ( http://www.theperlreview.com ), I<Unix Review> (
417http://www.unixreview.com/ ), I<Linux Magazine> (
418http://www.linuxmagazine.com/ ), and Usenix's newsletter/magazine to
419its members, I<login:> ( http://www.usenix.org/ ).
420
421The Perl columns of Randal L. Schwartz are available on the web at
422http://www.stonehenge.com/merlyn/WebTechniques/ ,
423http://www.stonehenge.com/merlyn/UnixReview/ , and
424http://www.stonehenge.com/merlyn/LinuxMag/ .
425
426The first (and for a long time, only) periodical devoted to All Things
427Perl, I<The Perl Journal> contains tutorials, demonstrations, case
428studies, announcements, contests, and much more. I<TPJ> has columns
429on web development, databases, Win32 Perl, graphical programming,
430regular expressions, and networking, and sponsors the Obfuscated Perl
431Contest and the Perl Poetry Contests. Beginning in November 2002, I<TPJ>
432moved to a reader-supported monthly e-zine format in which subscribers
433can download issues as PDF documents. In 2006, I<TPJ> merged with Dr.
434Dobbs Journal (online edition). To read old I<TPJ> articles, see
435http://www.ddj.com/ .
436
437=head2 What mailing lists are there for Perl?
438
439Most of the major modules (C<Tk>, C<CGI>, C<libwww-perl>) have their own
440mailing lists. Consult the documentation that came with the module for
441subscription information.
442
443A comprehensive list of Perl related mailing lists can be found at:
444
445 http://lists.perl.org/
446
447=head2 Where are the archives for comp.lang.perl.misc?
448
449The Google search engine now carries archived and searchable newsgroup
450content.
451
452http://groups.google.com/group/comp.lang.perl.misc/topics
453
454If you have a question, you can be sure someone has already asked the
455same question at some point on c.l.p.m. It requires some time and patience
456to sift through all the content but often you will find the answer you
457seek.
458
459=head2 Where can I buy a commercial version of perl?
460
461In a real sense, perl already I<is> commercial software: it has a license
462that you can grab and carefully read to your manager. It is distributed
463in releases and comes in well-defined packages. There is a very large
464user community and an extensive literature. The comp.lang.perl.*
465newsgroups and several of the mailing lists provide free answers to your
466questions in near real-time. Perl has traditionally been supported by
467Larry, scores of software designers and developers, and myriad
468programmers, all working for free to create a useful thing to make life
469better for everyone.
470
471However, these answers may not suffice for managers who require a
472purchase order from a company whom they can sue should anything go awry.
473Or maybe they need very serious hand-holding and contractual obligations.
474Shrink-wrapped CDs with perl on them are available from several sources if
475that will help. For example, many Perl books include a distribution of perl,
476as do the O'Reilly Perl Resource Kits (in both the Unix flavor
477and in the proprietary Microsoft flavor); the free Unix distributions
478also all come with perl.
479
480=head2 Where do I send bug reports?
481
482(contributed by brian d foy)
483
484First, ensure that you've found an actual bug. Second, ensure you've
485found an actual bug.
486
487If you've found a bug with the perl interpreter or one of the modules
488in the standard library (those that come with Perl), you can use the
489C<perlbug> utility that comes with Perl (>= 5.004). It collects
490information about your installation to include with your message, then
491sends the message to the right place.
492
493To determine if a module came with your version of Perl, you can
494use the C<Module::CoreList> module. It has the information about
495the modules (with their versions) included with each release of Perl.
496
497If C<Module::CoreList> is not installed on your system, check out
498http://perlpunks.de/corelist .
499
500Every CPAN module has a bug tracker set up in RT, http://rt.cpan.org .
501You can submit bugs to RT either through its web interface or by
502email. To email a bug report, send it to
503bug-E<lt>distribution-nameE<gt>@rt.cpan.org . For example, if you
504wanted to report a bug in C<Business::ISBN>, you could send a message to
505bug-Business-ISBN@rt.cpan.org .
506
507Some modules might have special reporting requirements, such as a
508Sourceforge or Google Code tracking system, so you should check the
509module documentation too.
510
511=head2 What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
512
513Perl.com at http://www.perl.com/ is part of the O'Reilly Network, a
514subsidiary of O'Reilly Media.
515
516The Perl Foundation is an advocacy organization for the Perl language
517which maintains the web site http://www.perl.org/ as a general
518advocacy site for the Perl language. It uses the domain to provide
519general support services to the Perl community, including the hosting
520of mailing lists, web sites, and other services. There are also many
521other sub-domains for special topics like learning Perl, Perl news, jobs
522in Perl, such as:
523
524 http://learn.perl.org/
525 http://use.perl.org/
526 http://jobs.perl.org/
527 http://lists.perl.org/
528
529Perl Mongers uses the pm.org domain for services related to Perl user
530groups, including the hosting of mailing lists and web sites. See the
531Perl user group web site at http://www.pm.org/ for more information about
532joining, starting, or requesting services for a Perl user group.
533
534http://www.cpan.org/ is the Comprehensive Perl Archive Network,
535a replicated worldwide repository of Perl software, see
536the I<What is CPAN?> question earlier in this document.
537
538=head1 AUTHOR AND COPYRIGHT
539
540Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
541other authors as noted. All rights reserved.
542
543This documentation is free; you can redistribute it and/or modify it
544under the same terms as Perl itself.
545
546Irrespective of its distribution, all code examples here are in the public
547domain. You are permitted and encouraged to use this code and any
548derivatives thereof in your own programs for fun or for profit as you
549see fit. A simple comment in the code giving credit to the FAQ would
550be courteous but is not required.