=head1 NAME
-perlfaq - frequently asked questions about Perl ($Date: 2005/03/27 07:21:21 $)
+perlfaq - frequently asked questions about Perl
=head1 DESCRIPTION
-The perlfaq is divided into several documents based on topics. A table
-of contents is at the end of this document.
+The perlfaq comprises several documents that answer the most commonly
+asked questions about Perl and Perl programming. It's divided by topic
+into nine major sections outlined in this document.
=head2 Where to get the perlfaq
-Extracts of the perlfaq are posted regularly to
-comp.lang.perl.misc. It is available on many web sites:
-http://www.perldoc.com/ and http://faq.perl.org/
+The perlfaq comes with the standard Perl distribution, so if you have Perl
+you should have the perlfaq. You should also have the C<perldoc> tool
+that lets you read the L<perlfaq>:
-=head2 How to contribute to the perlfaq
+ $ perldoc perlfaq
-You may mail corrections, additions, and suggestions to
-perlfaq-workers@perl.org . This alias should not be used to
-I<ask> FAQs. It's for fixing the current FAQ. Send
-questions to the comp.lang.perl.misc newsgroup. You can
-view the source tree at http://cvs.perl.org/cvsweb/perlfaq/
-(which is outside of the main Perl source tree). The CVS
-repository notes all changes to the FAQ.
+Besides your local system, you can find the perlfaq on the web, including
+at http://perldoc.perl.org/ .
-=head2 What will happen if you mail your Perl programming problems to the authors
+The perlfaq is an evolving document and you can read the latest version
+at http://faq.perl.org/ . The perlfaq-workers periodically post extracts
+of the latest perlfaq to comp.lang.perl.misc.
-Your questions will probably go unread, unless they're
-suggestions of new questions to add to the FAQ, in which
-case they should have gone to the perlfaq-workers@perl.org
-instead.
+You can view the source tree at
+https://svn.perl.org/modules/perlfaq/trunk/ (which is outside of the
+main Perl source tree). The SVN repository notes all changes to the FAQ
+and holds the latest version of the working documents and may vary
+significantly from the version distributed with the latest version of
+Perl. Check the repository before sending your corrections.
-You should have read section 2 of this faq. There you would
-have learned that comp.lang.perl.misc is the appropriate
-place to go for free advice. If your question is really
-important and you require a prompt and correct answer, you
-should hire a consultant.
+=head2 How to contribute to the perlfaq
-=head1 Credits
+You can mail corrections, additions, and suggestions to
+C<< <perlfaq-workers AT perl DOT org> >>. The perlfaq volunteers use this
+address to coordinate their efforts and track the perlfaq development.
+They appreciate your contributions to the FAQ but do not have time to
+provide individual help, so don't use this address to ask FAQs.
-The original perlfaq was written by Tom Christiansen, then expanded
-by collaboration between Tom and Nathan Torkington. The current
-document is maintained by the perlfaq-workers (perlfaq-workers@perl.org).
-Several people have contributed answers, corrections, and comments.
+The perlfaq server posts extracts of the perlfaq to that newsgroup every
+6 hours (or so), and the community of volunteers reviews and updates the
+answers. If you'd like to help review and update the answers, check out
+comp.lang.perl.misc.
-=head1 Author and Copyright Information
+=head2 What will happen if you mail your Perl programming problems to the authors?
-Copyright (c) 1997-2005 Tom Christiansen, Nathan Torkington, and
-other contributors noted in the answers.
+The perlfaq-workers like to keep all traffic on the perlfaq-workers list
+so that everyone can see the work being done (and the work that needs to
+be done). The mailing list serves as an official record. If you email the
+authors or maintainers directly, you'll probably get a reply asking you
+to post to the mailing list. If you don't get a reply, it probably means
+that the person never saw the message or didn't have time to deal with
+it. Posting to the list allows the volunteers with time to deal with it
+when others are busy.
-All rights reserved.
+If you have a question that isn't in the FAQ and you would like help with
+it, try the resources in L<perlfaq2>.
-=head2 Bundled Distributions
+=head1 CREDITS
-This documentation is free; you can redistribute it and/or modify it
-under the same terms as Perl itself.
+Tom Christiansen wrote the original perlfaq then expanded it with the
+help of Nat Torkington. The perlfaq-workers maintain current document
+and the denizens of comp.lang.perl.misc regularly review and update the
+FAQ. Several people have contributed answers, corrections, and comments,
+and the perlfaq notes those contributions wherever appropriate.
-Irrespective of its distribution, all code examples in these files
-are hereby placed into the public domain. You are permitted and
-encouraged to use this code in your own programs for fun
-or for profit as you see fit. A simple comment in the code giving
-credit would be courteous but is not required.
+=head1 AUTHOR AND COPYRIGHT
-=head2 Disclaimer
+Tom Christiansen wrote the original version of this document.
+brian d foy C<< <bdfoy@cpan.org> >> wrote this version. See the
+individual perlfaq documents for additional copyright information.
-This information is offered in good faith and in the hope that it may
-be of use, but is not guaranteed to be correct, up to date, or suitable
-for any particular purpose whatsoever. The authors accept no liability
-in respect of this information or its use.
+This document is available under the same terms as Perl itself. Code
+examples in all the perlfaq documents are in the public domain. Use
+them as you see fit (and at your own risk with no warranty from anyone).
=head1 Table of Contents
=item perlfaq9 - Networking
-
=back
-
=head1 The Questions
-
=head2 L<perlfaq1>: General Questions About Perl
Very general, high-level questions about Perl.
=item *
-What are perl4, perl5, or perl6?
+What are Perl 4, Perl 5, or Perl 6?
=item *
-What is Ponie?
+What was Ponie?
=item *
-What is perl6?
+What is Perl 6?
=item *
=item *
-How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language?
+How can I convince others to use Perl?
=back
=item *
-What machines support Perl? Where do I get it?
+What machines support perl? Where do I get it?
=item *
-How can I get a binary version of Perl?
+How can I get a binary version of perl?
=item *
-I don't have a C compiler on my system. How can I compile perl?
+I don't have a C compiler. How can I build my own Perl interpreter?
=item *
-I copied the Perl binary from one machine to another, but scripts don't work.
+I copied the perl binary from one machine to another, but scripts don't work.
=item *
=item *
-Perl in Magazines
-
-=item *
-
-Perl on the Net: FTP and WWW Access
+Which magazines have Perl content?
=item *
=item *
-Archives of comp.lang.perl.misc
+Where are the archives for comp.lang.perl.misc?
=item *
-Where can I buy a commercial version of Perl?
+Where can I buy a commercial version of perl?
=item *
=item *
-How can I use X or Tk with Perl?
+How can I write a GUI (X, Tk, Gtk, etc.) in Perl?
=item *
=item *
-How can I compile Perl into Java?
-
-=item *
-
How can I get C<#!perl> to work on [MS-DOS,NT,...]?
=item *
=item *
-Where can I learn about linking C with Perl? [h2xs, xsubpp]
+Where can I learn about linking C with Perl?
=item *
=item *
-Why is C<int()> broken?
+Why is int() broken?
=item *
=item *
-Does Perl have a C<round()> function? What about C<ceil()> and C<floor()>? Trig functions?
+Does Perl have a round() function? What about ceil() and floor()? Trig functions?
=item *
=item *
-Does Perl have a Year 2000 problem? Is Perl Y2K compliant?
+Does Perl have a Year 2000 problem? Is Perl Y2K compliant?
=item *
=item *
-What is the difference between C<$array[1]> and C<@array[1]>?
+What is the difference between $array[1] and @array[1]?
=item *
=item *
-Why does C<defined()> return true on empty arrays and hashes?
+Why does defined() return true on empty arrays and hashes?
=item *
=item *
-How do I reset an C<each()> operation part-way through?
+How do I reset an each() operation part-way through?
=item *
=item *
-How do I change one line in a file/delete a line in a file/insert a line in the middle of a file/append to the beginning of a file?
+How do I change, delete, or insert a line in a file, or append to the beginning of a file?
=item *
=item *
-How can I set up a footer format to be used with C<write()>?
+How can I set up a footer format to be used with write()?
+
+=item *
+
+How can I write() into a string?
=item *
-How can I C<write()> into a string?
+How can I open a filehandle to a string?
=item *
=item *
-Is there a leak/bug in C<glob()>?
+Is there a leak/bug in glob()?
=item *
=item *
-Why can't I just C<< open(FH, ">file.lock") >>?
+Why can't I just open(FH, "E<gt>file.lock")?
=item *
=item *
-How do I C<dup()> a filehandle in Perl?
+How do I dup() a filehandle in Perl?
=item *
=item *
-Why doesn't C<glob("*.*")> get all the files?
+Why doesn't glob("*.*") get all the files?
=item *
=head2 L<perlfaq6>: Regular Expressions
-This section is surprisingly small because the rest of the FAQ is
-littered with answers involving regular expressions. For example,
-decoding a URL and checking whether something is a number are handled
-with regular expressions, but those answers are found elsewhere in this
-document (in L<perlfaq9>: "How do I decode or create those %-encodings
-on the web" and L<perlfaq4>: "How do I determine whether a scalar is
-a number/whole/integer/float", to be precise).
+This section is surprisingly small because the rest of the FAQ is littered with answers involving regular expressions. For example, decoding a URL and checking whether something is a number are handled with regular expressions, but those answers are found elsewhere in this document (in L<perlfaq9>: "How do I decode or create those %-encodings on the web" and L<perlfaq4>: "How do I determine whether a scalar is a number/whole/integer/float", to be precise).
=over 4
=item *
-I put a regular expression into C<$/> but it didn't work. What's wrong?
+I put a regular expression into $/ but it didn't work. What's wrong?
=item *
=item *
-Why does using C<$&>, C<$`>, or C<$'> slow my program down?
+Why does using $&, $`, or $' slow my program down?
=item *
=item *
-How do I match a pattern that is supplied by the user?
+How do I match a regular expression that's in a variable?
=back
=item *
+How do I adopt or take over a module already on CPAN?
+
+=item *
+
How do I create a class?
=item *
=item *
-Why doesn't C<< my($foo) = <FILE>; >> work right?
+Why doesn't "my($foo) = E<lt>FILEE<gt>;" work right?
=item *
=item *
-What's the difference between calling a function as C<&foo> and C<foo()>?
+What's the difference between calling a function as &foo and foo()?
=item *
=item *
-How come C<exec()> doesn't return?
+How come exec() doesn't return?
=item *
=item *
-How can I C<sleep()> or C<alarm()> for under a second?
+How can I sleep() or alarm() for under a second?
=item *
=item *
-How can I do an C<atexit()> or C<setjmp()>/C<longjmp()>? (Exception handling)
+How can I do an atexit() or setjmp()/longjmp()? (Exception handling)
=item *
=item *
-Where do I get the include files to do C<ioctl()> or C<syscall()>?
+Where do I get the include files to do ioctl() or syscall()?
=item *
=item *
-Why can't I get the output of a command with C<system()>?
+Why can't I get the output of a command with system()?
=item *
=item *
-Why doesn't C<open()> return an error when a pipe open fails?
+Why doesn't open() return an error when a pipe open fails?
=item *
=item *
-I {changed directory, modified my environment} in a perl script. How come
-the change disappeared when I exited the script? How do I get my changes
-to be visible?
+I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible?
=item *
=item *
-How do I make a C<system()> exit on control-C?
+How do I make a system() exit on control-C?
=item *
=item *
-How do I add a directory to my include path (C<@INC>) at runtime?
+How do I add a directory to my include path (@INC) at runtime?
=item *
-What is F<socket.ph> and where do I get it?
+What is socket.ph and where do I get it?
=back
=item *
-How do I make a pop-up menu in HTML?
+How do I make an HTML pop-up menu with Perl?
=item *
=item *
-How do I edit my F<.htpasswd> and F<.htgroup> files with Perl?
+How do I edit my .htpasswd and .htgroup files with Perl?
=item *
=item *
-How do I find out my hostname/domainname/IP address?
+How do I find out my hostname, domainname, or IP address?
=item *