This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update perlfaq to CPAN version 5.20200523
[perl5.git] / cpan / perlfaq / lib / perlfaq1.pod
index 7556054..0ec9f16 100644 (file)
@@ -2,6 +2,10 @@
 
 perlfaq1 - General Questions About Perl
 
+=head1 VERSION
+
+version 5.20200523
+
 =head1 DESCRIPTION
 
 This section of the FAQ answers very general, high-level questions
@@ -10,20 +14,20 @@ about Perl.
 =head2 What is Perl?
 
 Perl is a high-level programming language with an eclectic heritage
-written by Larry Wall and a cast of thousands. 
+written by Larry Wall and a cast of thousands.
 
 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 web programming.
 
-Perl derives from the ubiquitous C programming language and to a 
-lesser extent from sed, awk, the Unix shell, and many other tools 
+Perl derives from the ubiquitous C programming language and to a
+lesser extent from sed, awk, the Unix shell, and many other tools
 and languages.
 
 These strengths make it especially popular with web developers
 and system administrators. Mathematicians, geneticists, journalists,
-managers and many other people also use Perl. 
+managers and many other people also use Perl.
 
 =head2 Who supports Perl? Who develops it? Why is it free?
 
@@ -36,9 +40,8 @@ documentation you're reading now were all written by volunteers.
 The core development team (known as the Perl Porters)
 are a group 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 the 
+money. You may snoop on pending developments via the
 L<archives|http://www.nntp.perl.org/group/perl.perl5.porters/>
-or read the L<faq|http://dev.perl.org/perl5/docs/p5p-faq.html>,
 or you can subscribe to the mailing list by sending
 perl5-porters-subscribe@perl.org a subscription request
 (an empty message with no subject is fine).
@@ -54,12 +57,11 @@ users the informal support will more than suffice. See the answer to
 
 =head2 Which version of Perl should I use?
 
-(contributed by brian d foy)
+(contributed by brian d foy with updates from others)
 
 There is often a matter of opinion and taste, and there isn't any one
 answer that fits everyone. In general, you want to use either the current
 stable release, or the stable release immediately prior to that one.
-Currently, those are perl5.14.x and perl5.12.x, respectively.
 
 Beyond that, you have to consider several things and decide which is best
 for you.
@@ -77,14 +79,21 @@ The latest versions of perl have more bug fixes.
 
 =item *
 
+The latest versions of perl may contain performance improvements and
+features not present in older versions.  There have been many changes
+in perl since perl5 was first introduced.
+
+=item *
+
 The Perl community is geared toward supporting the most recent releases,
 so you'll have an easier time finding help for those.
 
 =item *
 
-Versions prior to perl5.004 had serious security problems with buffer
-overflows, and in some cases have CERT advisories (for instance,
-L<http://www.cert.org/advisories/CA-1997-17.html> ).
+Older versions of perl may have security vulnerabilities, some of which
+are serious (see L<perlsec> and search
+L<CVEs|https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=Perl> for more
+information).
 
 =item *
 
@@ -94,37 +103,31 @@ problems others have if you are risk averse.
 
 =item *
 
-The immediate, previous releases (i.e. perl5.8.x ) are usually maintained
-for a while, although not at the same level as the current releases.
-
-=item *
-
-No one is actively supporting Perl 4. Ten years ago it was a dead
-camel carcass (according to this document). Now it's barely a skeleton
-as its whitewashed bones have fractured or eroded.
-
-=item *
-
-The current leading implementation of Perl 6, Rakudo, released a "useful,
-usable, 'early adopter'" distribution of Perl 6 (called Rakudo Star) in July of
-2010. Please see L<http://rakudo.org/> for more information.
+The immediate, in addition to the current stable release, the previous
+stable release is maintained.  See
+L<perlpolicy/"MAINTENANCE AND SUPPORT"> for more information.
 
 =item *
 
 There are really two tracks of perl development: a maintenance version
 and an experimental version. The maintenance versions are stable, and
-have an even number as the minor release (i.e. perl5.10.x, where 10 is the
+have an even number as the minor release (i.e. perl5.24.x, where 24 is the
 minor release). The experimental versions may include features that
 don't make it into the stable versions, and have an odd number as the
-minor release (i.e. perl5.9.x, where 9 is the minor release).
+minor release (i.e. perl5.25.x, where 25 is the minor release).
+
+=item *
+
+You can consult L<releases|http://dev.perl.org/perl5> to determine the
+current stable release of Perl.
 
 =back
 
-=head2 What are Perl 4, Perl 5, or Perl 6?
+=head2 What are Perl 4, Perl 5, or Raku (Perl 6)?
 
-In short, Perl 4 is the parent to both Perl 5 and Perl 6. Perl 5 is the older
-sibling, and though they are different languages, someone who knows one will
-spot many similarities in the other.
+In short, Perl 4 is the parent to both Perl 5 and Raku (formerly known as
+Perl 6). Perl 5 is the older sibling, and though they are different languages,
+someone who knows one will spot many similarities in the other.
 
 The number after Perl (i.e. the 5 after Perl 5) is the major release
 of the perl interpreter as well as the version of the language. Each
@@ -133,33 +136,32 @@ support.
 
 The current major release of Perl is Perl 5, first released in
 1994. It can run scripts from the previous major release, Perl 4
-(March 1991), but has significant differences. 
+(March 1991), but has significant differences.
 
-Perl 6 is a reinvention of Perl, it is a language in the same lineage but
-not compatible. The two are complementary, not mutually exclusive. Perl 6 is 
-not meant to replace Perl 5, and vice versa. See L</"What is Perl 6?"> below 
-to find out more.
+Raku is a reinvention of Perl, a language in the same lineage but
+not compatible. The two are complementary, not mutually exclusive. Raku is
+not meant to replace Perl, and vice versa. See L</"What is Raku (Perl 6)?">
+below to find out more.
 
 See L<perlhist> for a history of Perl revisions.
 
-=head2 What is Perl 6?
+=head2 What is Raku (Perl 6)?
 
-Perl 6 was I<originally> described as the community's rewrite of Perl 5.
-Development started in 2002; syntax and design work continue to this day. 
-As the language has evolved, it has become clear that it is a separate 
-language, incompatible with Perl 5 but in the same language family. 
+Raku (formerly known as Perl 6) was I<originally> described as the community's
+rewrite of Perl, however as the language evolved, it became clear that it is
+a separate language, but in the same language family as Perl.
 
-Contrary to popular belief, Perl 6 and Perl 5 peacefully coexist with one 
-another. Perl 6 has proven to be a fascinating source of ideas for those 
-using Perl 5 (the L<Moose> object system is a well-known example). There is 
-overlap in the communities, and this overlap fosters the tradition of sharing 
-and borrowing that have been instrumental to Perl's success. The current 
-leading implementation of Perl 6 is Rakudo, and you can learn more about 
-it at L<http://rakudo.org>.
+Raku is not intended primarily as a replacement for Perl, but as its
+own thing - and libraries exist to allow you to call Perl code from Raku
+programs and vice versa.
 
-If you want to learn more about Perl 6, or have a desire to help in
-the crusade to make Perl a better place then read the Perl 6 developers
-page at L<http://www.perl6.org/> and get involved.
+Contrary to popular belief, Raku and Perl peacefully coexist with one
+another. Raku has proven to be a fascinating source of ideas for those
+using Perl (the L<Moose> object system is a well-known example). There is
+overlap in the communities, and this overlap fosters the tradition of sharing
+and borrowing that have been instrumental to Perl's success.
+
+For more about Raku see L<https://www.raku.org/>.
 
 "We're really serious about reinventing everything that needs reinventing."
 --Larry Wall
@@ -174,6 +176,23 @@ The Perl development team occasionally make changes to the
 internal core of the language, but all possible efforts are made toward
 backward compatibility.
 
+=head2 How often are new versions of Perl released?
+
+Recently, the plan has been to release a new version of Perl roughly every
+April, but getting the release right is more important than sticking rigidly to
+a calendar date, so the release date is somewhat flexible.  The historical
+release dates can be viewed at L<http://www.cpan.org/src/README.html>.
+
+Even numbered minor versions (5.14, 5.16, 5.18) are production versions, and
+odd numbered minor versions (5.15, 5.17, 5.19) are development versions. Unless
+you want to try out an experimental feature, you probably never want to install
+a development version of Perl.
+
+The Perl development team are called Perl 5 Porters, and their
+organization is described at L<http://perldoc.perl.org/perlpolicy.html>.
+The organizational rules really just boil down to one: Larry is always
+right, even when he was wrong.
+
 =head2 Is Perl difficult to learn?
 
 No, Perl is easy to start L<learning|http://learn.perl.org/> --and easy to keep learning. It looks
@@ -203,13 +222,13 @@ discussed in Part 2.
 
 =head2 How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
 
-Perl can be used for almost any coding problem, even ones which require 
+Perl can be used for almost any coding problem, even ones which require
 integrating specialist C code for extra speed. As with any tool it can
 be used well or badly. Perl has many strengths, and a few weaknesses,
-precisely which areas are good and bad is often a personal choice. 
+precisely which areas are good and bad is often a personal choice.
 
-When choosing a language you should also be influenced by the 
-L<resources|http://www.cpan.org/>, L<testing culture|http://www.cpantesters.org/> 
+When choosing a language you should also be influenced by the
+L<resources|http://www.cpan.org/>, L<testing culture|http://www.cpantesters.org/>
 and L<community|http://www.perl.org/community.html> which surrounds it.
 
 For comparisons to a specific language it is often best to create
@@ -249,12 +268,12 @@ well), or you have an application language specifically designed for a
 certain task (e.g. prolog, make).
 
 If you find that you need to speed up a specific part of a Perl
-application (not something you often need) you may want to use C, 
+application (not something you often need) you may want to use C,
 but you can access this from your Perl code with L<perlxs>.
 
 =head2 What's the difference between "perl" and "Perl"?
 
-"Perl" is the name of the language. Only the "P" is capitalized. 
+"Perl" is the name of the language. Only the "P" is capitalized.
 The name of the interpreter (the program which runs the Perl script)
 is "perl" with a lowercase "p".