This is Info file perl.info, produced by Makeinfo version 1.68 from the
input file bigperl.texi.

   settitle perl


File: perl.info,  Node: perlfaq,  Next: perltoc,  Prev: perl5004delta,  Up: Top

frequently asked questions about Perl ($Date: 1999/05/23 20:38:02 $)
********************************************************************

NAME
====

   perlfaq - frequently asked questions about Perl ($Date: 1999/05/23
20:38:02 $)

DESCRIPTION
===========

   This document is structured into the following sections:

perlfaq: Structural overview of the FAQ.
     This document.

*Note Perlfaq1: perlfaq1,: General Questions About Perl
     Very general, high-level information about Perl.

        * What is Perl?

        * Who supports Perl?  Who develops it?  Why is it free?

        * Which version of Perl should I use?

        * What are perl4 and perl5?

        * What is perl6?

        * How stable is Perl?

        * Is Perl difficult to learn?

        * How does Perl compare with other languages like Java, Python,
          REXX, Scheme, or Tcl?

        * Can I do [task] in Perl?

        * When shouldn't I program in Perl?

        * What's the difference between "perl" and "Perl"?

        * Is it a Perl program or a Perl script?

        * What is a JAPH?

        * Where can I get a list of Larry Wall witticisms?

        * How can I convince my sysadmin/supervisor/employees to use
          version (5/5.005/Perl instead of some other language)?

*Note Perlfaq2: perlfaq2,: Obtaining and Learning about Perl
     Where to find source and documentation to Perl, support, and related
     matters.

        * What machines support Perl?  Where do I get it?

        * How can I get a binary version of Perl?

        * I don't have a C compiler on my system.  How can I compile perl?

        * I copied the Perl binary from one machine to another, but
          scripts don't work.

        * I grabbed the sources and tried to compile but gdbm/dynamic
          loading/malloc/linking/... failed.  How do I make it work?

        * What modules and extensions are available for Perl?  What is
          CPAN?  What does CPAN/src/... mean?

        * Is there an ISO or ANSI certified version of Perl?

        * Where can I get information on Perl?

        * What are the Perl newsgroups on USENET?  Where do I post
          questions?

        * Where should I post source code?

        * Perl Books

        * Perl in Magazines

        * Perl on the Net: FTP and WWW Access

        * What mailing lists are there for perl?

        * Archives of comp.lang.perl.misc

        * Where can I buy a commercial version of Perl?

        * Where do I send bug reports?

        * What is perl.com?

*Note Perlfaq3: perlfaq3,: Programming Tools
     Programmer tools and programming support.

        * How do I do (anything)?

        * How can I use Perl interactively?

        * Is there a Perl shell?

        * How do I debug my Perl programs?

        * How do I profile my Perl programs?

        * How do I cross-reference my Perl programs?

        * Is there a pretty-printer (formatter) for Perl?

        * Is there a ctags for Perl?

        * Is there an IDE or Windows Perl Editor?

        * Where can I get Perl macros for vi?

        * Where can I get perl-mode for emacs?

        * How can I use curses with Perl?

        * How can I use X or Tk with Perl?

        * How can I generate simple menus without using CGI or Tk?

        * What is undump?

        * How can I make my Perl program run faster?

        * How can I make my Perl program take less memory?

        * Is it unsafe to return a pointer to local data?

        * How can I free an array or hash so my program shrinks?

        * How can I make my CGI script more efficient?

        * How can I hide the source for my Perl program?

        * How can I compile my Perl program into byte code or C?

        * How can I compile Perl into Java?

        * How can I get `#!perl' to work on [MS-DOS,NT,...]?

        * Can I write useful perl programs on the command line?

        * Why don't perl one-liners work on my DOS/Mac/VMS system?

        * Where can I learn about CGI or Web programming in Perl?

        * Where can I learn about object-oriented Perl programming?

        * Where can I learn about linking C with Perl? [h2xs, xsubpp]

        * I've read perlembed, perlguts, etc., but I can't embed perl in
          my C program, what am I doing wrong?

        * When I tried to run my script, I got this message. What does it
          mean?

        * What's MakeMaker?

*Note Perlfaq4: perlfaq4,: Data Manipulation
     Manipulating numbers, dates, strings, arrays, hashes, and
     miscellaneous data issues.

        * Why am I getting long decimals (eg, 19.9499999999999) instead of
          the numbers I should be getting (eg, 19.95)?

        * Why isn't my octal data interpreted correctly?

        * Does Perl have a round() function?  What about ceil() and
          floor()?  Trig functions?

        * How do I convert bits into ints?

        * Why doesn't & work the way I want it to?

        * How do I multiply matrices?

        * How do I perform an operation on a series of integers?

        * How can I output Roman numerals?

        * Why aren't my random numbers random?

        * How do I find the week-of-the-year/day-of-the-year?

        * How do I find the current century or millennium?

        * How can I compare two dates and find the difference?

        * How can I take a string and turn it into epoch seconds?

        * How can I find the Julian Day?

        * How do I find yesterday's date?

        * Does Perl have a year 2000 problem?  Is Perl Y2K compliant?

        * How do I validate input?

        * How do I unescape a string?

        * How do I remove consecutive pairs of characters?

        * How do I expand function calls in a string?

        * How do I find matching/nesting anything?

        * How do I reverse a string?

        * How do I expand tabs in a string?

        * How do I reformat a paragraph?

        * How can I access/change the first N letters of a string?

        * How do I change the Nth occurrence of something?

        * How can I count the number of occurrences of a substring within
          a string?

        * How do I capitalize all the words on one line?

        * How can I split a [character] delimited string except when
          inside [character]? (Comma-separated files)

        * How do I strip blank space from the beginning/end of a string?

        * How do I pad a string with blanks or pad a number with zeroes?

        * How do I extract selected columns from a string?

        * How do I find the soundex value of a string?

        * How can I expand variables in text strings?

        * What's wrong with always quoting "$vars"?

        * Why don't my <<HERE documents work?

        * What is the difference between a list and an array?

        * What is the difference between $array[1] and @array[1]?

        * How can I remove duplicate elements from a list or array?

        * How can I tell whether a list or array contains a certain
          element?

        * How do I compute the difference of two arrays?  How do I compute
          the intersection of two arrays?

        * How do I test whether two arrays or hashes are equal?

        * How do I find the first array element for which a condition is
          true?

        * How do I handle linked lists?

        * How do I handle circular lists?

        * How do I shuffle an array randomly?

        * How do I process/modify each element of an array?

        * How do I select a random element from an array?

        * How do I permute N elements of a list?

        * How do I sort an array by (anything)?

        * How do I manipulate arrays of bits?

        * Why does defined() return true on empty arrays and hashes?

        * How do I process an entire hash?

        * What happens if I add or remove keys from a hash while iterating
          over it?

        * How do I look up a hash element by value?

        * How can I know how many entries are in a hash?

        * How do I sort a hash (optionally by value instead of key)?

        * How can I always keep my hash sorted?

        * What's the difference between "delete" and "undef" with hashes?

        * Why don't my tied hashes make the defined/exists distinction?

        * How do I reset an each() operation part-way through?

        * How can I get the unique keys from two hashes?

        * How can I store a multidimensional array in a DBM file?

        * How can I make my hash remember the order I put elements into it?

        * Why does passing a subroutine an undefined element in a hash
          create it?

        * How can I make the Perl equivalent of a C structure/C++
          class/hash or array of hashes or arrays?

        * How can I use a reference as a hash key?

        * How do I handle binary data correctly?

        * How do I determine whether a scalar is a
          number/whole/integer/float?

        * How do I keep persistent data across program calls?

        * How do I print out or copy a recursive data structure?

        * How do I define methods for every class/object?

        * How do I verify a credit card checksum?

        * How do I pack arrays of doubles or floats for XS code?

*Note Perlfaq5: perlfaq5,: Files and Formats
     I/O and the "f" issues: filehandles, flushing, formats and footers.

        * How do I flush/unbuffer an output filehandle?  Why must I do
          this?

        * 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 count the number of lines in a file?

        * How do I make a temporary file name?

        * How can I manipulate fixed-record-length files?

        * How can I make a filehandle local to a subroutine?  How do I
          pass filehandles between subroutines?  How do I make an array of
          filehandles?

        * How can I use a filehandle indirectly?

        * How can I set up a footer format to be used with write()?

        * How can I write() into a string?

        * How can I output my numbers with commas added?

        * How can I translate tildes (~) in a filename?

        * How come when I open a file read-write it wipes it out?

        * Why do I sometimes get an "Argument list too long" when I use
          <*>?

        * Is there a leak/bug in glob()?

        * How can I open a file with a leading ">" or trailing blanks?

        * How can I reliably rename a file?

        * How can I lock a file?

        * Why can't I just open(FH, ">file.lock")?

        * I still don't get locking.  I just want to increment the number
          in the file.  How can I do this?

        * How do I randomly update a binary file?

        * How do I get a file's timestamp in perl?

        * How do I set a file's timestamp in perl?

        * How do I print to more than one file at once?

        * How can I read in an entire file all at once?

        * How can I read in a file by paragraphs?

        * How can I read a single character from a file?  From the
          keyboard?

        * How can I tell whether there's a character waiting on a
          filehandle?

        * How do I do a `tail -f' in perl?

        * How do I dup() a filehandle in Perl?

        * How do I close a file descriptor by number?

        * Why can't I use "C:\temp\foo" in DOS paths?  What doesn't
          `C:\temp\foo.exe` work?

        * Why doesn't glob("*.*") get all the files?

        * Why does Perl let me delete read-only files?  Why does -i
          clobber protected files?  Isn't this a bug in Perl?

        * How do I select a random line from a file?

        * Why do I get weird spaces when I print an array of lines?

*Note Perlfaq6: perlfaq6,: Regexps
     Pattern matching and regular expressions.

        * How can I hope to use regular expressions without creating
          illegible and unmaintainable code?

        * I'm having trouble matching over more than one line.  What's
          wrong?

        * How can I pull out lines between two patterns that are
          themselves on different lines?

        * I put a regular expression into $/ but it didn't work. What's
          wrong?

        * How do I substitute case insensitively on the LHS, but
          preserving case on the RHS?

        * How can I make `\w' match national character sets?

        * How can I match a locale-smart version of `/[a-zA-Z]/'?

        * How can I quote a variable to use in a regex?

        * What is `/o' really for?

        * How do I use a regular expression to strip C style comments from
          a file?

        * Can I use Perl regular expressions to match balanced text?

        * What does it mean that regexes are greedy?  How can I get around
          it?

        * How do I process each word on each line?

        * How can I print out a word-frequency or line-frequency summary?

        * How can I do approximate matching?

        * How do I efficiently match many regular expressions at once?

        * Why don't word-boundary searches with `\b' work for me?

        * Why does using $&, $`, or $' slow my program down?

        * What good is `\G' in a regular expression?

        * Are Perl regexes DFAs or NFAs?  Are they POSIX compliant?

        * What's wrong with using grep or map in a void context?

        * How can I match strings with multibyte characters?

        * How do I match a pattern that is supplied by the user?

*Note Perlfaq7: perlfaq7,: General Perl Language Issues
     General Perl language issues that don't clearly fit into any of the
     other sections.

        * Can I get a BNF/yacc/RE for the Perl language?

        * What are all these $@%&* punctuation signs, and how do I know
          when to use them?

        * Do I always/never have to quote my strings or use semicolons and
          commas?

        * How do I skip some return values?

        * How do I temporarily block warnings?

        * What's an extension?

        * Why do Perl operators have different precedence than C operators?

        * How do I declare/create a structure?

        * How do I create a module?

        * How do I create a class?

        * How can I tell if a variable is tainted?

        * What's a closure?

        * What is variable suicide and how can I prevent it?

        * How can I pass/return a {Function, FileHandle, Array, Hash,
          Method, Regex}?

        * How do I create a static variable?

        * What's the difference between dynamic and lexical (static)
          scoping?  Between local() and my()?

        * How can I access a dynamic variable while a similarly named
          lexical is in scope?

        * What's the difference between deep and shallow binding?

        * Why doesn't "my($foo) = <FILE>;" work right?

        * How do I redefine a builtin function, operator, or method?

        * What's the difference between calling a function as &foo and
          foo()?

        * How do I create a switch or case statement?

        * How can I catch accesses to undefined
          variables/functions/methods?

        * Why can't a method included in this same file be found?

        * How can I find out my current package?

        * How can I comment out a large block of perl code?

        * How do I clear a package?

        * How can I use a variable as a variable name?

*Note Perlfaq8: perlfaq8,: System Interaction
     Interprocess communication (IPC), control over the user-interface
     (keyboard, screen and pointing devices).

        * How do I find out which operating system I'm running under?

        * How come exec() doesn't return?

        * How do I do fancy stuff with the keyboard/screen/mouse?

        * How do I print something out in color?

        * How do I read just one key without waiting for a return key?

        * How do I check whether input is ready on the keyboard?

        * How do I clear the screen?

        * How do I get the screen size?

        * How do I ask the user for a password?

        * How do I read and write the serial port?

        * How do I decode encrypted password files?

        * How do I start a process in the background?

        * How do I trap control characters/signals?

        * How do I modify the shadow password file on a Unix system?

        * How do I set the time and date?

        * How can I sleep() or alarm() for under a second?

        * How can I measure time under a second?

        * How can I do an atexit() or setjmp()/longjmp()? (Exception
          handling)

        * Why doesn't my sockets program work under System V (Solaris)?
          What does the error message "Protocol not supported" mean?

        * How can I call my system's unique C functions from Perl?

        * Where do I get the include files to do ioctl() or syscall()?

        * Why do setuid perl scripts complain about kernel problems?

        * How can I open a pipe both to and from a command?

        * Why can't I get the output of a command with system()?

        * How can I capture STDERR from an external command?

        * Why doesn't open() return an error when a pipe open fails?

        * What's wrong with using backticks in a void context?

        * How can I call backticks without shell processing?

        * Why can't my script read from STDIN after I gave it EOF (^D on
          Unix, ^Z on MS-DOS)?

        * How can I convert my shell script to perl?

        * Can I use perl to run a telnet or ftp session?

        * How can I write expect in Perl?

        * Is there a way to hide perl's command line from programs such as
          "ps"?

        * 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?

        * How do I close a process's filehandle without waiting for it to
          complete?

        * How do I fork a daemon process?

        * How do I make my program run with sh and csh?

        * How do I find out if I'm running interactively or not?

        * How do I timeout a slow event?

        * How do I set CPU limits?

        * How do I avoid zombies on a Unix system?

        * How do I use an SQL database?

        * How do I make a system() exit on control-C?

        * How do I open a file without blocking?

        * How do I install a module from CPAN?

        * What's the difference between require and use?

        * How do I keep my own module/library directory?

        * How do I add the directory my program lives in to the
          module/library search path?

        * How do I add a directory to my include path at runtime?

        * What is socket.ph and where do I get it?

*Note Perlfaq9: perlfaq9,: Networking
     Networking, the Internet, and a few on the web.

        * My CGI script runs from the command line but not the browser.
          (500 Server Error)

        * How can I get better error messages from a CGI program?

        * How do I remove HTML from a string?

        * How do I extract URLs?

        * How do I download a file from the user's machine?  How do I open
          a file on another machine?

        * How do I make a pop-up menu in HTML?

        * How do I fetch an HTML file?

        * How do I automate an HTML form submission?

        * How do I decode or create those %-encodings on the web?

        * How do I redirect to another page?

        * How do I put a password on my web pages?

        * How do I edit my .htpasswd and .htgroup files with Perl?

        * How do I make sure users can't enter values into a form that
          cause my CGI script to do bad things?

        * How do I parse a mail header?

        * How do I decode a CGI form?

        * How do I check a valid mail address?

        * How do I decode a MIME/BASE64 string?

        * How do I return the user's mail address?

        * How do I send mail?

        * How do I read mail?

        * How do I find out my hostname/domainname/IP address?

        * How do I fetch a news article or the active newsgroups?

        * How do I fetch/put an FTP file?

        * How can I do RPC in Perl?

Where to get this document
--------------------------

   This document is posted regularly to comp.lang.perl.announce and
several other related newsgroups.  It is available in a variety of formats
from CPAN in the /CPAN/doc/FAQs/FAQ/ directory, or on the web at
http://www.perl.com/perl/faq/ .

How to contribute to this document
----------------------------------

   You may mail corrections, additions, and suggestions to
perlfaq-suggestions@perl.com .  This alias should not be used to *ask*
FAQs.  It's for fixing the current FAQ.  Send questions to the
comp.lang.perl.misc newsgroup.

What will happen if you mail your Perl programming problems to the authors
--------------------------------------------------------------------------

   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-suggestions@perl.com instead.

   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.

Credits
=======

   When I first began the Perl FAQ in the late 80s, I never realized it
would have grown to over a hundred pages, nor that Perl would ever become
so popular and widespread.  This document could not have been written
without the tremendous help provided by Larry Wall and the rest of the
Perl Porters.

Author and Copyright Information
================================

   Copyright (c) 1997-1999 Tom Christiansen and Nathan Torkington.  All
rights reserved.

Bundled Distributions
---------------------

   When included as part of the Standard Version of Perl, or as part of
its complete documentation whether printed or otherwise, this work may be
distributed only under the terms of Perl's Artistic License.  Any
distribution of this file or derivatives thereof *outside* of that package
require that special arrangements be made with copyright holder.

   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.

Disclaimer
----------

   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.

Changes
=======

  1. Extensive updates from the net in preparation for 5.6 release.

  2. More minor touch-ups.  Added new question at the end of perlfaq7 on
     variable names within variables.

  3. Small touchups here and there.  Added all questions in this document
     as a sort of table of contents.

  4. Significant changes throughout in preparation for the 5.005 release.

  5. Style and whitespace changes from Chip, new question on reading one
     character at a time from a terminal using POSIX from Tom.

  6. Added http://www.oasis.leo.org/perl/ to *Note Perlfaq2: perlfaq2,.
     Style fix to *Note Perlfaq3: perlfaq3,.  Added floating point
     precision, fixed complex number arithmetic, cross-references, caveat
     for Text::Wrap, alternative answer for initial capitalizing, fixed
     incorrect regexp, added example of Tie::IxHash to *Note Perlfaq4:
     perlfaq4,.  Added example of passing and storing filehandles, added
     commify to *Note Perlfaq5: perlfaq5,.  Restored variable suicide, and
     added mass commenting to *Note Perlfaq7: perlfaq7,.  Added
     Net::Telnet, fixed backticks, added reader/writer pair to telnet
     question, added FindBin, grouped module questions together in *Note
     Perlfaq8: perlfaq8,.  Expanded caveats for the simple URL extractor,
     gave LWP example, added CGI security question, expanded on the mail
     address answer in *Note Perlfaq9: perlfaq9,.

  7. Added more info to the binary distribution section of *Note Perlfaq2:
     perlfaq2,.  Added Net::Telnet to *Note Perlfaq6: perlfaq6,.  Fixed
     typos in *Note Perlfaq8: perlfaq8,.  Added mail sending example to
     *Note Perlfaq9: perlfaq9,.  Added Merlyn's columns to *Note Perlfaq2:
     perlfaq2,.

  8. Added the DATE to the NAME section, indicating which sections have
     changed.

     Mentioned SIGPIPE and *Note Perlipc: perlipc, in the forking open
     answer in *Note Perlfaq8: perlfaq8,.

     Fixed description of a regular expression in *Note Perlfaq4:
     perlfaq4,.

  9. Version Various typos fixed throughout.

     Added new question on Perl BNF on *Note Perlfaq7: perlfaq7,.

 10. Initial Release: 11/March/97 This is the initial release of version 3
     of the FAQ; consequently there have been no changes since its initial
     release.



File: perl.info,  Node: perlfaq1,  Next: Top,  Prev: Top,  Up: Top

General Questions About Perl ($Revision: 1.23 $, $Date: 1999/05/23 16:08:30 $)
******************************************************************************

NAME
====

   perlfaq1 - General Questions About Perl ($Revision: 1.23 $, $Date:
1999/05/23 16:08:30 $)

DESCRIPTION
===========

   This section of the FAQ answers very general, high-level questions
about Perl.

What is Perl?
-------------

   Perl is a high-level programming language with an eclectic heritage
written by Larry Wall and a cast of thousands.  It derives from the
ubiquitous C programming language and to a lesser extent from sed, awk,
the Unix shell, and at least a dozen other tools and languages.  Perl's
process, file, and text manipulation facilities make it particularly
well-suited for tasks involving quick prototyping, system utilities,
software tools, system management tasks, database access, graphical
programming, networking, and world wide web programming.  These strengths
make it especially popular with system administrators and CGI script
authors, but mathematicians, geneticists, journalists, and even managers
also use Perl.  Maybe you should, too.

Who supports Perl?  Who develops it?  Why is it free?
-----------------------------------------------------

   The original culture of the pre-populist Internet and the deeply-held
beliefs of Perl's author, Larry Wall, gave rise to the free and open
distribution policy of perl.  Perl is supported by its users.  The core,
the standard Perl library, the optional modules, and the documentation
you're reading now were all written by volunteers.  See the personal note
at the end of the README file in the perl source distribution for more
details.  See *Note Perlhist: perlhist, (new as of 5.005) for Perl's
milestone releases.

   In particular, the core development team (known as the Perl Porters)
are a rag-tag band of highly altruistic individuals committed to producing
better software for free than you could hope to purchase for money.  You
may snoop on pending developments via
news://news.perl.com/perl.porters-gw/ and the Deja archive at
http://www.deja.com/ using the perl.porters-gw newsgroup, or you can
subscribe to the mailing list by sending perl5-porters-request@perl.org a
subscription request.

   While the GNU project includes Perl in its distributions, there's no
such thing as "GNU Perl".  Perl is not produced nor maintained by the Free
Software Foundation.  Perl's licensing terms are also more open than GNU
software's tend to be.

   You can get commercial support of Perl if you wish, although for most
users the informal support will more than suffice.  See the answer to
"Where can I buy a commercial version of perl?" for more information.

Which version of Perl should I use?
-----------------------------------

   You should definitely use version 5.  Version 4 is old, limited, and no
longer maintained; its last patch (4.036) was in 1992, long ago and far
away.  Sure, it's stable, but so is anything that's dead; in fact, perl4
had been called a dead, flea-bitten camel carcass.  The most recent
production release is 5.005_03 (although 5.004_05 is still supported).
The most cutting-edge development release is 5.005_57.  Further references
to the Perl language in this document refer to the production release
unless otherwise specified.  There may be one or more official bug fixes
by the time you read this, and also perhaps some experimental versions on
the way to the next release.  All releases prior to 5.004 were subject to
buffer overruns, a grave security issue.

What are perl4 and perl5?
-------------------------

   Perl4 and perl5 are informal names for different versions of the Perl
programming language.  It's easier to say "perl5" than it is to say "the
5(.004) release of Perl", but some people have interpreted this to mean
there's a language called "perl5", which isn't the case.  Perl5 is merely
the popular name for the fifth major release (October 1994), while perl4
was the fourth major release (March 1991).  There was also a perl1 (in
January 1988), a perl2 (June 1988), and a perl3 (October 1989).

   The 5.0 release is, essentially, a ground-up rewrite of the original
perl source code from releases 1 through 4.  It has been modularized,
object-oriented, tweaked, trimmed, and optimized until it almost doesn't
look like the old code.  However, the interface is mostly the same, and
compatibility with previous releases is very high. See `"Perl4 to Perl5
Traps"', *Note Perltrap: perltrap,.

   To avoid the "what language is perl5?" confusion, some people prefer to
simply use "perl" to refer to the latest version of perl and avoid using
"perl5" altogether.  It's not really that big a deal, though.

   See *Note Perlhist: perlhist, for a history of Perl revisions.

What is perl6?
--------------

   Perl6 is a semi-jocular reference to the Topaz project.  Headed by Chip
Salzenberg, Topaz is yet-another ground-up rewrite of the current release
of Perl, one whose major goal is to create a more maintainable core than
found in release 5.  Written in nominally portable C++, Topaz hopes to
maintain 100% source-compatibility with previous releases of Perl but to
run significantly faster and smaller.  The Topaz team hopes to provide an
XS compatibility interface to allow most XS modules to work unchanged,
albeit perhaps without the efficiency that the new interface would allow.
New features in Topaz are as yet undetermined, and will be addressed once
compatibility and performance goals are met.

   If you are a hard-working C++ wizard with a firm command of Perl's
internals, and you would like to work on the project, send a request to
perl6-porters-request@perl.org to subscribe to the Topaz mailing list.

   There is no ETA for Topaz.  It is expected to be several years before it
achieves enough robustness, compatibility, portability, and performance to
replace perl5 for ordinary use by mere mortals.

How stable is Perl?
-------------------

   Production releases, which incorporate bug fixes and new functionality,
are widely tested before release.  Since the 5.000 release, we have
averaged only about one production release per year.

   Larry and the Perl development team occasionally make changes to the
internal core of the language, but all possible efforts are made toward
backward compatibility.  While not quite all perl4 scripts run flawlessly
under perl5, an update to perl should nearly never invalidate a program
written for an earlier version of perl (barring accidental bug fixes and
the rare new keyword).

Is Perl difficult to learn?
---------------------------

   No, Perl is easy to start learning - and easy to keep learning.  It
looks like most programming languages you're likely to have experience
with, so if you've ever written a C program, an awk script, a shell
script, or even a BASIC program, you're already part way there.

   Most tasks only require a small subset of the Perl language.  One of
the guiding mottos for Perl development is "there's more than one way to
do it" (TMTOWTDI, sometimes pronounced "tim toady").  Perl's learning
curve is therefore shallow (easy to learn) and long (there's a whole lot
you can do if you really want).

   Finally, because Perl is frequently (but not always, and certainly not
by definition) an interpreted language, you can write your programs and
test them without an intermediate compilation step, allowing you to
experiment and test/debug quickly and easily.  This ease of
experimentation flattens the learning curve even more.

   Things that make Perl easier to learn: Unix experience, almost any kind
of programming experience, an understanding of regular expressions, and
the ability to understand other people's code.  If there's something you
need to do, then it's probably already been done, and a working example is
usually available for free.  Don't forget the new perl modules, either.
They're discussed in Part 3 of this FAQ, along with CPAN, which is
discussed in Part 2.

How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
-----------------------------------------------------------------------------------

   Favorably in some areas, unfavorably in others.  Precisely which areas
are good and bad is often a personal choice, so asking this question on
Usenet runs a strong risk of starting an unproductive Holy War.

   Probably the best thing to do is try to write equivalent code to do a
set of tasks.  These languages have their own newsgroups in which you can
learn about (but hopefully not argue about) them.

   Some comparison documents can be found at
http://language.perl.com/versus/ if you really can't stop yourself.

Can I do [task] in Perl?
------------------------

   Perl is flexible and extensible enough for you to use on virtually any
task, from one-line file-processing tasks to large, elaborate systems.
For many people, Perl serves as a great replacement for shell scripting.
For others, it serves as a convenient, high-level replacement for most of
what they'd program in low-level languages like C or C++.  It's ultimately
up to you (and possibly your management) which tasks you'll use Perl for
and which you won't.

   If you have a library that provides an API, you can make any component
of it available as just another Perl function or variable using a Perl
extension written in C or C++ and dynamically linked into your main perl
interpreter.  You can also go the other direction, and write your main
program in C or C++, and then link in some Perl code on the fly, to create
a powerful application.  See *Note Perlembed: perlembed,.

   That said, there will always be small, focused, special-purpose
languages dedicated to a specific problem domain that are simply more
convenient for certain kinds of problems.  Perl tries to be all things to
all people, but nothing special to anyone.  Examples of specialized
languages that come to mind include prolog and matlab.

When shouldn't I program in Perl?
---------------------------------

   When your manager forbids it - but do consider replacing them :-).

   Actually, one good reason is when you already have an existing
application written in another language that's all done (and done well),
or you have an application language specifically designed for a certain
task (e.g. prolog, make).

   For various reasons, Perl is probably not well-suited for real-time
embedded systems, low-level operating systems development work like device
drivers or context-switching code, complex multi-threaded shared-memory
applications, or extremely large applications.  You'll notice that perl is
not itself written in Perl.

   The new, native-code compiler for Perl may eventually reduce the
limitations given in the previous statement to some degree, but understand
that Perl remains fundamentally a dynamically typed language, not a
statically typed one.  You certainly won't be chastised if you don't trust
nuclear-plant or brain-surgery monitoring code to it.  And Larry will
sleep easier, too - Wall Street programs not withstanding. :-)

What's the difference between "perl" and "Perl"?
------------------------------------------------

   One bit.  Oh, you weren't talking ASCII? :-) Larry now uses "Perl" to
signify the language proper and "perl" the implementation of it, i.e. the
current interpreter.  Hence Tom's quip that "Nothing but perl can parse
Perl."  You may or may not choose to follow this usage.  For example,
parallelism means "awk and perl" and "Python and Perl" look OK, while "awk
and Perl" and "Python and perl" do not.  But never write "PERL", because
perl isn't really an acronym, apocryphal folklore and post-facto
expansions notwithstanding.

Is it a Perl program or a Perl script?
--------------------------------------

   Larry doesn't really care.  He says (half in jest) that "a script is
what you give the actors.  A program is what you give the audience."

   Originally, a script was a canned sequence of normally interactive
commands, that is, a chat script.  Something like a UUCP or PPP chat
script or an expect script fits the bill nicely, as do configuration
scripts run by a program at its start up, such `.cshrc' or `.ircrc', for
example.  Chat scripts were just drivers for existing programs, not
stand-alone programs in their own right.

   A computer scientist will correctly explain that all programs are
interpreted, and that the only question is at what level.  But if you ask
this question of someone who isn't a computer scientist, they might tell
you that a program has been compiled to physical machine code once, and
can then be run multiple times, whereas a *script* must be translated by a
program each time it's used.

   Perl programs are (usually) neither strictly compiled nor strictly
interpreted.  They can be compiled to a byte-code form (something of a
Perl virtual machine) or to completely different languages, like C or
assembly language.  You can't tell just by looking at it whether the
source is destined for a pure interpreter, a parse-tree interpreter, a
byte-code interpreter, or a native-code compiler, so it's hard to give a
definitive answer here.

   Now that "script" and "scripting" are terms that have been seized by
unscrupulous or unknowing marketeers for their own nefarious purposes,
they have begun to take on strange and often pejorative meanings, like
"non serious" or "not real programming".  Consequently, some Perl
programmers prefer to avoid them altogether.

What is a JAPH?
---------------

   These are the "just another perl hacker" signatures that some people
sign their postings with.  Randal Schwartz made these famous.  About 100
of the earlier ones are available from http://www.perl.com/CPAN/misc/japh .

Where can I get a list of Larry Wall witticisms?
------------------------------------------------

   Over a hundred quips by Larry, from postings of his or source code, can
be found at http://www.perl.com/CPAN/misc/lwall-quotes.txt.gz .

   Newer examples can be found by perusing Larry's postings:

     http://x1.dejanews.com/dnquery.xp?QRY=*&DBS=2&ST=PS&defaultOp=AND&LNG=ALL&format=terse&showsort=date&maxhits=100&subjects=&groups=&authors=larry@*wall.org&fromdate=&todate=

How can I convince my sysadmin/supervisor/employees to use version (5/5.005/Perl instead of some other language)?
-----------------------------------------------------------------------------------------------------------------

   If your manager or employees are wary of unsupported software, or
software which doesn't officially ship with your operating system, you
might try to appeal to their self-interest.  If programmers can be more
productive using and utilizing Perl constructs, functionality, simplicity,
and power, then the typical manager/supervisor/employee may be persuaded.
Regarding using Perl in general, it's also sometimes helpful to point out
that delivery times may be reduced using Perl, as compared to other
languages.

   If you have a project which has a bottleneck, especially in terms of
translation or testing, Perl almost certainly will provide a viable, and
quick solution.  In conjunction with any persuasion effort, you should not
fail to point out that Perl is used, quite extensively, and with extremely
reliable and valuable results, at many large computer software and/or
hardware companies throughout the world.  In fact, many Unix vendors now
ship Perl by default, and support is usually just a news-posting away, if
you can't find the answer in the *comprehensive* documentation, including
this FAQ.

   See http://www.perl.org/advocacy/ for more information.

   If you face reluctance to upgrading from an older version of perl, then
point out that version 4 is utterly unmaintained and unsupported by the
Perl Development Team.  Another big sell for Perl5 is the large number of
modules and extensions which greatly reduce development time for any given
task.  Also mention that the difference between version 4 and version 5 of
Perl is like the difference between awk and C++.  (Well, OK, maybe not
quite that distinct, but you get the idea.)  If you want support and a
reasonable guarantee that what you're developing will continue to work in
the future, then you have to run the supported version.  That probably
means running the 5.005 release, although 5.004 isn't that bad.  Several
important bugs were fixed from the 5.000 through 5.003 versions, though,
so try upgrading past them if possible.

   Of particular note is the massive bug hunt for buffer overflow problems
that went into the 5.004 release.  All releases prior to that, including
perl4, are considered insecure and should be upgraded as soon as possible.

AUTHOR AND COPYRIGHT
====================

   Copyright (c) 1997, 1998, 1999 Tom Christiansen and Nathan Torkington.
All rights reserved.

   When included as an integrated part of the Standard Distribution of
Perl or of its documentation (printed or otherwise), this works is covered
under Perl's Artistic Licence.  For separate distributions of all or part
of this FAQ outside of that, see *Note Perlfaq: perlfaq,.

   Irrespective of its distribution, all code examples here are in the
public domain.  You are permitted and encouraged to use this code and any
derivatives thereof in your own programs for fun or for profit as you see
fit.  A simple comment in the code giving credit to the FAQ would be
courteous but is not required.


File: perl.info,  Node: perlfaq2,  Next: Top,  Prev: Top,  Up: Top

Obtaining and Learning about Perl ($Revision: 1.32 $, $Date: 1999/10/14 18:46:09 $)
***********************************************************************************

NAME
====

   perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.32 $, $Date:
1999/10/14 18:46:09 $)

DESCRIPTION
===========

   This section of the FAQ answers questions about where to find source
and documentation for Perl, support, and related matters.

What machines support Perl?  Where do I get it?
-----------------------------------------------

   The standard release of Perl (the one maintained by the perl
development team) is distributed only in source code form.  You can find
this at http://www.perl.com/CPAN/src/latest.tar.gz , which in standard
Internet format (a gzipped archive in POSIX tar format).

   Perl builds and runs on a bewildering number of platforms.  Virtually
all known and current Unix derivatives are supported (Perl's native
platform), as are other systems like VMS, DOS, OS/2, Windows, QNX, BeOS,
and the Amiga.  There are also the beginnings of support for MPE/iX.

   Binary distributions for some proprietary platforms, including Apple
systems, can be found http://www.perl.com/CPAN/ports/ directory.  Because
these are not part of the standard distribution, they may and in fact do
differ from the base Perl port in a variety of ways.  You'll have to check
their respective release notes to see just what the differences are.
These differences can be either positive (e.g. extensions for the features
of the particular platform that are not supported in the source release of
perl) or negative (e.g.  might be based upon a less current source release
of perl).

How can I get a binary version of Perl?
---------------------------------------

   If you don't have a C compiler because your vendor for whatever reasons
did not include one with your system, the best thing to do is grab a
binary version of gcc from the net and use that to compile perl with.
CPAN only has binaries for systems that are terribly hard to get free
compilers for, not for Unix systems.

   Some URLs that might help you are:

     http://language.perl.com/info/software.html
     http://www.perl.com/pub/language/info/software.html#binary
     http://www.perl.com/CPAN/ports/

   Someone looking for a Perl for Win16 might look to Laszlo Molnar's djgpp
port in http://www.perl.com/CPAN/ports/msdos/ , which comes with clear
installation instructions.  A simple installation guide for MS-DOS using
Ilya Zakharevich's OS/2 port is available at
http://www.cs.ruu.nl/%7Epiet/perl5dos.html and similarly for Windows 3.1
at http://www.cs.ruu.nl/%7Epiet/perlwin3.html .

I don't have a C compiler on my system.  How can I compile perl?
----------------------------------------------------------------

   Since you don't have a C compiler, you're doomed and your vendor should
be sacrificed to the Sun gods.  But that doesn't help you.

   What you need to do is get a binary version of gcc for your system
first.  Consult the Usenet FAQs for your operating system for information
on where to get such a binary version.

I copied the Perl binary from one machine to another, but scripts don't work.
-----------------------------------------------------------------------------

   That's probably because you forgot libraries, or library paths differ.
You really should build the whole distribution on the machine it will
eventually live on, and then type make install.  Most other approaches are
doomed to failure.

   One simple way to check that things are in the right place is to print
out the hard-coded @INC which perl is looking for.

     % perl -e 'print join("\n",@INC)'

   If this command lists any paths which don't exist on your system, then
you may need to move the appropriate libraries to these locations, or
create symbolic links, aliases, or shortcuts appropriately.  @INC is also
printed as part of the output of

     % perl -V

   You might also want to check out `"How do I keep my own module', *Note
Perlfaq8: perlfaq8,.

I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed.  How do I make it work?
----------------------------------------------------------------------------------------------------------------------

   Read the INSTALL file, which is part of the source distribution.  It
describes in detail how to cope with most idiosyncrasies that the
Configure script can't work around for any given system or architecture.

What modules and extensions are available for Perl?  What is CPAN?  What does CPAN/src/... mean?
------------------------------------------------------------------------------------------------

   CPAN stands for Comprehensive Perl Archive Network, a huge archive
replicated on dozens of machines all over the world.  CPAN contains source
code, non-native ports, documentation, scripts, and many third-party
modules and extensions, designed for everything from commercial database
interfaces to keyboard/screen control to web walking and CGI scripts.  The
master machine for CPAN is ftp://ftp.funet.fi/pub/languages/perl/CPAN/,
but you can use the address http://www.perl.com/CPAN/CPAN.html to fetch a
copy from a "site near you".  See http://www.perl.com/CPAN (without a
slash at the end) for how this process works.

   CPAN/path/... is a naming convention for files available on CPAN sites.
CPAN indicates the base directory of a CPAN mirror, and the rest of the
path is the path from that directory to the file.  For instance, if you're
using ftp://ftp.funet.fi/pub/languages/perl/CPAN as your CPAN site, the
file CPAN/misc/japh file is downloadable as
ftp://ftp.funet.fi/pub/languages/perl/CPAN/misc/japh .

   Considering that there are hundreds of existing modules in the archive,
one probably exists to do nearly anything you can think of.  Current
categories under CPAN/modules/by-category/ include Perl core modules;
development support; operating system interfaces; networking, devices, and
interprocess communication; data type utilities; database interfaces; user
interfaces; interfaces to other languages; filenames, file systems, and
file locking; internationalization and locale; world wide web support;
server and daemon utilities; archiving and compression; image
manipulation; mail and news; control flow utilities; filehandle and I/O;
Microsoft Windows modules; and miscellaneous modules.

Is there an ISO or ANSI certified version of Perl?
--------------------------------------------------

   Certainly not.  Larry expects that he'll be certified before Perl is.

Where can I get information on Perl?
------------------------------------

   The complete Perl documentation is available with the Perl distribution.
If you have Perl installed locally, you probably have the documentation
installed as well: type `man perl' if you're on a system resembling Unix.
This will lead you to other important man pages, including how to set your
$MANPATH.  If you're not on a Unix system, access to the documentation
will be different; for example, it might be only in HTML format.  But all
proper Perl installations have fully-accessible documentation.

   You might also try `perldoc perl' in case your system doesn't have a
proper man command, or it's been misinstalled.  If that doesn't work, try
looking in /usr/local/lib/perl5/pod for documentation.

   If all else fails, consult the CPAN/doc directory, which contains the
complete documentation in various formats, including native pod, troff,
html, and plain text.  There's also a web page at
http://www.perl.com/perl/info/documentation.html that might help.

   Many good books have been written about Perl - see the section below
for more details.

   Tutorial documents are included in current or upcoming Perl releases
include *Note Perltoot: perltoot, for objects, *Note Perlopentut:
perlopentut, for file opening semantics, *Note Perlreftut: perlreftut, for
managing references, and *Note Perlxstut: perlxstut, for linking C and
Perl together.  There may be more by the time you read this.  The
following URLs might also be of assistance:

     http://language.perl.com/info/documentation.html
     http://reference.perl.com/query.cgi?tutorials

What are the Perl newsgroups on Usenet?  Where do I post questions?
-------------------------------------------------------------------

   The now defunct comp.lang.perl newsgroup has been superseded by the
following groups:

     comp.lang.perl.announce 		Moderated announcement group
     comp.lang.perl.misc     		Very busy group about Perl in general
     comp.lang.perl.moderated            Moderated discussion group
     comp.lang.perl.modules  		Use and development of Perl modules
     comp.lang.perl.tk           	Using Tk (and X) from Perl

     comp.infosystems.www.authoring.cgi 	Writing CGI scripts for the Web.

   There is also Usenet gateway to the mailing list used by the crack Perl
development team (perl5-porters) at news://news.perl.com/perl.porters-gw/ .

Where should I post source code?
--------------------------------

   You should post source code to whichever group is most appropriate, but
feel free to cross-post to comp.lang.perl.misc.  If you want to cross-post
to alt.sources, please make sure it follows their posting standards,
including setting the Followup-To header line to NOT include alt.sources;
see their FAQ (http://www.faqs.org/faqs/alt-sources-intro/) for details.

   If you're just looking for software, first use AltaVista
(http://www.altavista.com), Deja (http://www.deja.com), and search CPAN.
This is faster and more productive than just posting a request.

Perl Books
----------

   A number of books on Perl and/or CGI programming are available.  A few
of these are good, some are OK, but many aren't worth your money.  Tom
Christiansen maintains a list of these books, some with extensive reviews,
at http://www.perl.com/perl/critiques/index.html.

   The incontestably definitive reference book on Perl, written by the
creator of Perl, is now in its second edition:

     Programming Perl (the "Camel Book"):
     	by Larry Wall, Tom Christiansen, and Randal Schwartz
         ISBN 1-56592-149-6      (English)
         ISBN 4-89052-384-7      (Japanese)
     	URL: http://www.oreilly.com/catalog/pperl2/
     (French, German, Italian, and Hungarian translations also
     available)

   The companion volume to the Camel containing thousands of real-world
examples, mini-tutorials, and complete programs (first premiering at the
1998 Perl Conference), is:

     The Perl Cookbook (the "Ram Book"):
     	by Tom Christiansen and Nathan Torkington,
     		    with Foreword by Larry Wall
     	ISBN: 1-56592-243-3
     	URL:  http://perl.oreilly.com/cookbook/

   If you're already a hard-core systems programmer, then the Camel Book
might suffice for you to learn Perl from.  But if you're not, check out:

     Learning Perl (the "Llama Book"):
     	by Randal Schwartz and Tom Christiansen
     		    with Foreword by Larry Wall
     	ISBN: 1-56592-284-0
     	URL:  http://www.oreilly.com/catalog/lperl2/

   Despite the picture at the URL above, the second edition of "Llama
Book" really has a blue cover, and is updated for the 5.004 release of
Perl.  Various foreign language editions are available, including
*Learning Perl on Win32 Systems* (the Gecko Book).

   If you're not an accidental programmer, but a more serious and possibly
even degreed computer scientist who doesn't need as much hand-holding as
we try to provide in the Llama or its defurred cousin the Gecko, please
check out the delightful book, *Perl: The Programmer's Companion*, written
by Nigel Chapman.

   You can order O'Reilly books directly from O'Reilly & Associates,
1-800-998-9938.  Local/overseas is 1-707-829-0515.  If you can locate an
O'Reilly order form, you can also fax to 1-707-829-0104.  See
http://www.ora.com/ on the Web.

   What follows is a list of the books that the FAQ authors found
personally useful.  Your mileage may (but, we hope, probably won't) vary.

   Recommended books on (or mostly on) Perl follow; those marked with a
star may be ordered from O'Reilly.

References
          *Programming Perl
          	by Larry Wall, Tom Christiansen, and Randal L. Schwartz

          *Perl 5 Desktop Reference
              by Johan Vromans

          *Perl in a Nutshell
              by Ellen Siever, Stephan Spainhour, and Nathan Patwardhan

Tutorials
          *Learning Perl [2nd edition]
          	by Randal L. Schwartz and Tom Christiansen
          	    with foreword by Larry Wall

          *Learning Perl on Win32 Systems
          	by Randal L. Schwartz, Erik Olson, and Tom Christiansen,
          	    with foreword by Larry Wall

          Perl: The Programmer's Companion
          	by Nigel Chapman

          Cross-Platform Perl
          	by Eric F. Johnson

          MacPerl: Power and Ease
          	by Vicki Brown and Chris Nandor, foreword by Matthias Neeracher

Task-Oriented
          *The Perl Cookbook
          	by Tom Christiansen and Nathan Torkington
          	    with foreword by Larry Wall

          Perl5 Interactive Course [2nd edition]
          	by Jon Orwant

          *Advanced Perl Programming
          	by Sriram Srinivasan

          Effective Perl Programming
          	by Joseph Hall

Special Topics
          *Mastering Regular Expressions
          	by Jeffrey Friedl

          How to Set up and Maintain a World Wide Web Site [2nd edition]
          	by Lincoln Stein

          *Learning Perl/Tk
              by Nancy Walsh

Perl in Magazines
-----------------

   The first and only periodical devoted to All Things Perl, *The Perl
Journal* contains tutorials, demonstrations, case studies, announcements,
contests, and much more.  TPJ has columns on web development, databases,
Win32 Perl, graphical programming, regular expressions, and networking,
and sponsors the Obfuscated Perl Contest.  It is published quarterly under
the gentle hand of its editor, Jon Orwant.  See http://www.tpj.com/ or
send mail to subscriptions@tpj.com .

   Beyond this, magazines that frequently carry high-quality articles on
Perl are *Web Techniques* (see http://www.webtechniques.com/),
*Performance Computing* (http://www.performance-computing.com/), and
Usenix's newsletter/magazine to its members, *login:*, at
http://www.usenix.org/.  Randal's Web Technique's columns are available on
the web at http://www.stonehenge.com/merlyn/WebTechniques/.

Perl on the Net: FTP and WWW Access
-----------------------------------

   To get the best (and possibly cheapest) performance, pick a site from
the list below and use it to grab the complete list of mirror sites.  From
there you can find the quickest site for you.  Remember, the following
list is not the complete list of CPAN mirrors.

     http://www.perl.com/CPAN-local
     http://www.perl.com/CPAN	(redirects to an ftp mirror)
     ftp://cpan.valueclick.com/pub/CPAN/
     ftp://ftp.funet.fi/pub/languages/perl/CPAN/
     http://www.cs.ruu.nl/pub/PERL/CPAN/
     ftp://ftp.cs.colorado.edu/pub/perl/CPAN/

What mailing lists are there for Perl?
--------------------------------------

   Most of the major modules (Tk, CGI, libwww-perl) have their own mailing
lists.  Consult the documentation that came with the module for
subscription information.  The Perl Mongers attempt to maintain a list of
mailing lists at:

     http://www.perl.org/support/online_support.html#mail

Archives of comp.lang.perl.misc
-------------------------------

   Have you tried Deja or AltaVista?  Those are the best archives.  Just
look up "*perl*" as a newsgroup.

     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=

   You'll probably want to trim that down a bit, though.

   You'll probably want more a sophisticated query and retrieval mechanism
than a file listing, preferably one that allows you to retrieve articles
using a fast-access indices, keyed on at least author, date, subject,
thread (as in "trn") and probably keywords.  The best solution the FAQ
authors know of is the MH pick command, but it is very slow to select on
18000 articles.

   If you have, or know where can be found, the missing sections, please
let perlfaq-suggestions@perl.com know.

Where can I buy a commercial version of Perl?
---------------------------------------------

   In a real sense, Perl already *is* commercial software: It has a license
that you can grab and carefully read to your manager. It is distributed in
releases and comes in well-defined packages. There is a very large user
community and an extensive literature.  The comp.lang.perl.* newsgroups
and several of the mailing lists provide free answers to your questions in
near real-time.  Perl has traditionally been supported by Larry, scores of
software designers and developers, and myriads of programmers, all working
for free to create a useful thing to make life better for everyone.

   However, these answers may not suffice for managers who require a
purchase order from a company whom they can sue should anything go awry.
Or maybe they need very serious hand-holding and contractual obligations.
Shrink-wrapped CDs with Perl on them are available from several sources if
that will help.  For example, many Perl books carry a Perl distribution on
them, as do the O'Reilly Perl Resource Kits (in both the Unix flavor and
in the proprietary Microsoft flavor); the free Unix distributions also all
come with Perl.

   Or you can purchase commercial incidence based support through the Perl
Clinic.  The following is a commercial from them:

   "The Perl Clinic is a commercial Perl support service operated by
ActiveState Tool Corp. and The Ingram Group.  The operators have many
years of in-depth experience with Perl applications and Perl internals on
a wide range of platforms.

   "Through our group of highly experienced and well-trained support
engineers, we will put our best effort into understanding your problem,
providing an explanation of the situation, and a recommendation on how to
proceed."

   Contact The Perl Clinic at:

     www.PerlClinic.com

     North America Pacific Standard Time (GMT-8)
     Tel:    1 604 606-4611 hours 8am-6pm
     Fax:    1 604 606-4640

     Europe (GMT)
     Tel:    00 44 1483 862814
     Fax:    00 44 1483 862801

   See also www.perl.com for updates on tutorials, training, and support.

Where do I send bug reports?
----------------------------

   If you are reporting a bug in the perl interpreter or the modules
shipped with Perl, use the *perlbug* program in the Perl distribution or
mail your report to perlbug@perl.com .

   If you are posting a bug with a non-standard port (see the answer to
"What platforms is Perl available for?"), a binary distribution, or a
non-standard module (such as Tk, CGI, etc), then please see the
documentation that came with it to determine the correct place to post
bugs.

   Read the perlbug(1) man page (perl5.004 or later) for more information.

What is perl.com? Perl Mongers? pm.org? perl.org?
-------------------------------------------------

   The perl.com domain is owned by Tom Christiansen, who created it as a
public service long before perl.org came about.  Despite the name, it's a
pretty non-commercial site meant to be a clearinghouse for information
about all things Perlian, accepting no paid advertisements, bouncy happy
GIFs, or silly Java applets on its pages.  The Perl Home Page at
http://www.perl.com/ is currently hosted on a T3 line courtesy of Songline
Systems, a software-oriented subsidiary of O'Reilly and Associates.  Other
starting points include

     http://language.perl.com/
     http://conference.perl.com/
     http://reference.perl.com/

   Perl Mongers is an advocacy organization for the Perl language.  For
details, see the Perl Mongers web site at http://www.perlmongers.org/.

   Perl Mongers uses the pm.org domain for services related to Perl user
groups.  See the Perl user group web site at http://www.pm.org/ for more
information about joining, starting, or requesting services for a Perl
user group.

   Perl Mongers also maintains the perl.org domain to provide general
support services to the Perl community, including the hosting of mailing
lists, web sites, and other services.  The web site http://www.perl.org/
is a general advocacy site for the Perl language, and there are many other
sub-domains for special topics, such as

     http://history.perl.org/
     http://bugs.perl.org/
     http://www.news.perl.org/

AUTHOR AND COPYRIGHT
====================

   Copyright (c) 1997-1999 Tom Christiansen and Nathan Torkington.  All
rights reserved.

   When included as an integrated part of the Standard Distribution of
Perl or of its documentation (printed or otherwise), this works is covered
under Perl's Artistic License.  For separate distributions of all or part
of this FAQ outside of that, see *Note Perlfaq: perlfaq,.

   Irrespective of its distribution, all code examples here are in the
public domain.  You are permitted and encouraged to use this code and any
derivatives thereof in your own programs for fun or for profit as you see
fit.  A simple comment in the code giving credit to the FAQ would be
courteous but is not required.


