This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
New perldelta
[perl5.git] / pod / perl.pod
index 4233b5b..fd292da 100644 (file)
@@ -15,6 +15,8 @@ B<perl>       S<[ B<-sTtuUWX> ]>
        S<[ B<-i>[I<extension>] ]>
        S<[ [B<-e>|B<-E>] I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
 
+For more information on these options, you can run C<perldoc perlrun>.
+
 =head1 GETTING HELP
 
 The F<perldoc> program gives you access to all the documentation that comes
@@ -40,9 +42,9 @@ flag =   perlvms
 path perlfaq.*               cpan/perlfaq/lib/
 path perlglossary            cpan/perlfaq/lib/
 path perlxs(?:tut|typemap)?  dist/ExtUtils-ParseXS/lib/
-path perldoc                 cpan/Pod-Perldoc/lib/
+path perldoc                 cpan/Pod-Perldoc/
 
-aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
+aux c2ph h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
 
 =end buildtoc
 
@@ -50,6 +52,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 
     perl               Perl overview (this section)
     perlintro          Perl introduction for beginners
+    perlrun            Perl execution and options
     perltoc            Perl documentation table of contents
 
 =head2 Tutorials
@@ -94,7 +97,6 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
     perlpod            Perl plain old documentation
     perlpodspec        Perl plain old documentation format specification
     perlpodstyle       Perl POD style guide
-    perlrun            Perl execution and options
     perldiag           Perl diagnostic messages
     perllexwarn        Perl warnings and their control
     perldebug          Perl debugging
@@ -119,6 +121,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
     perllocale         Perl locale support
     perluniintro       Perl Unicode introduction
     perlunicode        Perl Unicode support
+    perlunicook        Perl Unicode cookbook
     perlunifaq         Perl Unicode FAQ
     perluniprops       Index of Unicode properties in Perl
     perlunitut         Perl Unicode tutorial
@@ -177,15 +180,37 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 
     perlhist           Perl history records
     perldelta          Perl changes since previous version
-    perl5173delta      Perl changes in version 5.17.3
-    perl5172delta      Perl changes in version 5.17.2
-    perl5171delta      Perl changes in version 5.17.1
-    perl5170delta      Perl changes in version 5.17.0
+    perl5258delta      Perl changes in version 5.25.8
+    perl5257delta      Perl changes in version 5.25.7
+    perl5256delta      Perl changes in version 5.25.6
+    perl5255delta      Perl changes in version 5.25.5
+    perl5254delta      Perl changes in version 5.25.4
+    perl5253delta      Perl changes in version 5.25.3
+    perl5252delta      Perl changes in version 5.25.2
+    perl5251delta      Perl changes in version 5.25.1
+    perl5250delta      Perl changes in version 5.25.0
+    perl5240delta      Perl changes in version 5.24.0
+    perl5222delta      Perl changes in version 5.22.2
+    perl5221delta      Perl changes in version 5.22.1
+    perl5220delta      Perl changes in version 5.22.0
+    perl5203delta      Perl changes in version 5.20.3
+    perl5202delta      Perl changes in version 5.20.2
+    perl5201delta      Perl changes in version 5.20.1
+    perl5200delta      Perl changes in version 5.20.0
+    perl5184delta      Perl changes in version 5.18.4
+    perl5182delta      Perl changes in version 5.18.2
+    perl5181delta      Perl changes in version 5.18.1
+    perl5180delta      Perl changes in version 5.18.0
+    perl5163delta      Perl changes in version 5.16.3
+    perl5162delta      Perl changes in version 5.16.2
     perl5161delta      Perl changes in version 5.16.1
     perl5160delta      Perl changes in version 5.16.0
+    perl5144delta      Perl changes in version 5.14.4
+    perl5143delta      Perl changes in version 5.14.3
     perl5142delta      Perl changes in version 5.14.2
     perl5141delta      Perl changes in version 5.14.1
     perl5140delta      Perl changes in version 5.14.0
+    perl5125delta      Perl changes in version 5.12.5
     perl5124delta      Perl changes in version 5.12.4
     perl5123delta      Perl changes in version 5.12.3
     perl5122delta      Perl changes in version 5.12.2
@@ -226,13 +251,11 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 
     perlaix            Perl notes for AIX
     perlamiga          Perl notes for AmigaOS
-    perlbeos           Perl notes for BeOS
+    perlandroid                Perl notes for Android
     perlbs2000         Perl notes for POSIX-BC BS2000
     perlce             Perl notes for WinCE
     perlcygwin         Perl notes for Cygwin
-    perldgux           Perl notes for DG/UX
     perldos            Perl notes for DOS
-    perlepoc           Perl notes for EPOC
     perlfreebsd        Perl notes for FreeBSD
     perlhaiku          Perl notes for Haiku
     perlhpux           Perl notes for HP-UX
@@ -241,7 +264,6 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
     perllinux          Perl notes for Linux
     perlmacos          Perl notes for Mac OS (Classic)
     perlmacosx         Perl notes for Mac OS X
-    perlmpeix          Perl notes for MPE/iX
     perlnetware        Perl notes for NetWare
     perlopenbsd        Perl notes for OpenBSD
     perlos2            Perl notes for OS/2
@@ -252,8 +274,8 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
     perlriscos         Perl notes for RISC OS
     perlsolaris        Perl notes for Solaris
     perlsymbian        Perl notes for Symbian
+    perlsynology       Perl notes for Synology
     perltru64          Perl notes for Tru64
-    perlvmesa          Perl notes for VM/ESA
     perlvms            Perl notes for VMS
     perlvos            Perl notes for Stratus VOS
     perlwin32          Perl notes for Windows
@@ -264,6 +286,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 
     perlboot           
     perlbot            
+    perlrepository
     perltodo
     perltooc           
     perltoot           
@@ -273,9 +296,16 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 On a Unix-like system, these documentation files will usually also be
 available as manpages for use with the F<man> program.
 
+Some documentation is not available as man pages, so if a
+cross-reference is not found by man, try it with L<perldoc>.  Perldoc can
+also take you directly to documentation for functions (with the B<-f>
+switch). See C<perldoc --help> (or C<perldoc perldoc> or C<man perldoc>)
+for other helpful options L<perldoc> has to offer.
+
 In general, if something strange has gone wrong with your program and you're
-not sure where you should look for help, try the B<-w> switch first.  It will
-often point out exactly where the trouble is.
+not sure where you should look for help, try making your code comply with
+B<use strict> and B<use warnings>.  These will often point out exactly
+where the trouble is.
 
 =head1 DESCRIPTION
 
@@ -290,108 +320,22 @@ a general-purpose programming language. It's widely used for everything
 from quick "one-liners" to full-scale application development.
 
 The language is intended to be practical (easy to use, efficient,
-complete) rather than beautiful (tiny, elegant, minimal).
-
-Perl combines (in the author's opinion, anyway) some of the best
-features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
-those languages should have little difficulty with it.  (Language
-historians will also note some vestiges of B<csh>, Pascal, and even
-BASIC-PLUS.)  Expression syntax corresponds closely to C
-expression syntax.  Unlike most Unix utilities, Perl does not
-arbitrarily limit the size of your data--if you've got the memory,
-Perl can slurp in your whole file as a single string.  Recursion is of
-unlimited depth.  And the tables used by hashes (sometimes called
-"associative arrays") grow as necessary to prevent degraded
-performance.  Perl can use sophisticated pattern matching techniques to
-scan large amounts of data quickly.  Although optimized for
-scanning text, Perl also has many excellent tools for slicing
-and dicing binary data.
-
-But wait, there's more...
-
-Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
-rewrite that provides the following additional benefits:
-
-=over 4
-
-=item *
-
-modularity and reusability using innumerable modules 
-
-Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
-
-=item *
-
-embeddable and extensible 
-
-Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlxstypemap>,
-L<perlcall>, L<perlguts>, and L<xsubpp>.
-
-=item *
-
-roll-your-own magic variables (including multiple simultaneous DBM
-implementations)
-
-Described in L<perltie> and L<AnyDBM_File>.
-
-=item *
-
-subroutines can now be overridden, autoloaded, and prototyped
-
-Described in L<perlsub>.
-
-=item *
-
-arbitrarily nested data structures and anonymous functions
-
-Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
-
-=item *
-
-object-oriented programming
-
-Described in L<perlobj> and L<perlootut>.
-
-=item *
-
-support for light-weight processes (threads)
-
-Described in L<perlthrtut> and L<threads>.
-
-=item *
-
-support for Unicode, internationalization, and localization
-
-Described in L<perluniintro>, L<perllocale> and L<Locale::Maketext>.
-
-=item *
-
-lexical scoping
-
-Described in L<perlsub>.
-
-=item *
-
-regular expression enhancements
-
-Described in L<perlre>, with additional examples in L<perlop>.
-
-=item *
-
-enhanced debugger and interactive Perl environment,
-with integrated editor support
-
-Described in L<perldebtut>, L<perldebug> and L<perldebguts>.
-
-=item *
-
-POSIX 1003.1 compliant library
-
-Described in L<POSIX>.
-
-=back
-
-Okay, that's I<definitely> enough hype.
+complete) rather than beautiful (tiny, elegant, minimal).  It combines
+(in the author's opinion, anyway) some of the best features of B<sed>,
+B<awk>, and B<sh>, making it familiar and easy to use for Unix users to
+whip up quick solutions to annoying problems.  Its general-purpose
+programming facilities support procedural, functional, and
+object-oriented programming paradigms, making Perl a comfortable
+language for the long haul on major projects, whatever your bent.
+
+Perl's roots in text processing haven't been forgotten over the years.
+It still boasts some of the most powerful regular expressions to be
+found anywhere, and its support for Unicode text is world-class.  It
+handles all kinds of structured text, too, through an extensive
+collection of extensions.  Those libraries, collected in the CPAN,
+provide ready-made solutions to an astounding array of problems.  When
+they haven't set the standard themselves, they steal from the best
+-- just like Perl itself.
 
 =head1 AVAILABILITY
 
@@ -416,6 +360,9 @@ Perl developers, please write to perl-thanks@perl.org .
 
  "@INC"                        locations of perl libraries
 
+"@INC" above is a reference to the built-in variable of the same name;
+see L<perlvar> for more information.
+
 =head1 SEE ALSO
 
  http://www.perl.org/       the Perl homepage
@@ -425,8 +372,13 @@ Perl developers, please write to perl-thanks@perl.org .
 
 =head1 DIAGNOSTICS
 
-The C<use warnings> pragma (and the B<-w> switch) produces some 
-lovely diagnostics.
+Using the C<use strict> pragma ensures that all variables are properly
+declared and prevents other misuses of legacy Perl features.
+
+The C<use warnings> pragma produces some lovely diagnostics. One can
+also use the B<-w> flag, but its use is normally discouraged, because
+it gets applied to all executed Perl code, including that not under
+your control.
 
 See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
 diagnostics> pragma automatically turns Perl's normally terse warnings
@@ -440,12 +392,12 @@ B<-e> is counted as one line.)
 Setuid scripts have additional constraints that can produce error
 messages such as "Insecure dependency".  See L<perlsec>.
 
-Did we mention that you should definitely consider using the B<-w>
-switch?
+Did we mention that you should definitely consider using the B<use warnings>
+pragma?
 
 =head1 BUGS
 
-The B<-w> switch is not mandatory.
+The behavior implied by the B<use warnings> pragma is not mandatory.
 
 Perl is at the mercy of your machine's definitions of various
 operations such as type casting, atof(), and floating-point