Some thoughts on foreach reverse
[p5sagit/p5-mst-13.2.git] / pod / perl.pod
index 3b4d785..e17f309 100644 (file)
@@ -12,66 +12,187 @@ B<perl>    S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
     S<[ B<-i>[I<extension>] ]> S<[ B<-e> I<'command'> ] 
     [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
 
-For ease of access, the Perl manual has been split up into a number
-of sections:
+If you're new to Perl, you should start with L<perlintro>, which is a 
+general intro for beginners and provides some background to help you
+navigate the rest of Perl's extensive documentation.
+
+For ease of access, the Perl manual has been split up into several sections.
+
+=head2 Overview
 
     perl               Perl overview (this section)
-    perldelta          Perl changes since previous version
-    perl5005delta      Perl changes in version 5.005
-    perl5004delta      Perl changes in version 5.004
-    perlfaq            Perl frequently asked questions
+    perlintro          Perl introduction for beginners
     perltoc            Perl documentation table of contents
 
-    perldata           Perl data structures
-    perlsyn            Perl syntax
-    perlop             Perl operators and precedence
-    perlre             Perl regular expressions
-    perlrun            Perl execution and options
-    perlfunc           Perl builtin functions
-    perlopentut                Perl open() tutorial
-    perlvar            Perl predefined variables
-    perlsub            Perl subroutines
-    perlmod            Perl modules: how they work
-    perlmodlib         Perl modules: how to write and use
-    perlmodinstall     Perl modules: how to install from CPAN
-    perlform           Perl formats
-    perllocale         Perl locale support
+=head2 Tutorials
 
     perlreftut         Perl references short introduction
-    perlref            Perl references, the rest of the story
     perldsc            Perl data structures intro
     perllol            Perl data structures: arrays of arrays
+
+    perlrequick        Perl regular expressions quick start
+    perlretut          Perl regular expressions tutorial
+
+    perlboot           Perl OO tutorial for beginners
     perltoot           Perl OO tutorial, part 1
-    perltootc          Perl OO tutorial, part 2
+    perltooc           Perl OO tutorial, part 2
+    perlbot            Perl OO tricks and examples
+
+    perlstyle          Perl style guide
+
+    perlcheat          Perl cheat sheet
+    perltrap           Perl traps for the unwary
+    perldebtut         Perl debugging tutorial
+
+    perlfaq            Perl frequently asked questions
+      perlfaq1         General Questions About Perl
+      perlfaq2         Obtaining and Learning about Perl
+      perlfaq3         Programming Tools
+      perlfaq4         Data Manipulation
+      perlfaq5         Files and Formats
+      perlfaq6         Regexes
+      perlfaq7         Perl Language Issues
+      perlfaq8         System Interaction
+      perlfaq9         Networking
+
+=head2 Reference Manual
+
+    perlsyn            Perl syntax
+    perldata           Perl data structures
+    perlop             Perl operators and precedence
+    perlsub            Perl subroutines
+    perlfunc           Perl built-in functions
+      perlopentut      Perl open() tutorial
+      perlpacktut      Perl pack() and unpack() tutorial
+    perlpod            Perl plain old documentation
+    perlpodspec        Perl plain old documentation format specification
+    perlrun            Perl execution and options
+    perldiag           Perl diagnostic messages
+    perllexwarn        Perl warnings and their control
+    perldebug          Perl debugging
+    perlvar            Perl predefined variables
+    perlre             Perl regular expressions, the rest of the story
+    perlreref          Perl regular expressions quick reference
+    perlref            Perl references, the rest of the story
+    perlform           Perl formats
     perlobj            Perl objects
     perltie            Perl objects hidden behind simple variables
-    perlbot            Perl OO tricks and examples
+      perldbmfilter    Perl DBM filters
+
     perlipc            Perl interprocess communication
+    perlfork           Perl fork() information
+    perlnumber         Perl number semantics
+
     perlthrtut         Perl threads tutorial
-    perldbmfilter      Perl DBM Filters
+      perlothrtut      Old Perl threads tutorial
 
-    perldebug          Perl debugging
-    perldiag           Perl diagnostic messages
-    perlsec            Perl security
-    perltrap           Perl traps for the unwary
     perlport           Perl portability guide
-    perlstyle          Perl style guide
+    perllocale         Perl locale support
+    perluniintro       Perl Unicode introduction
+    perlunicode        Perl Unicode support
+    perlebcdic         Considerations for running Perl on EBCDIC platforms
 
-    perlpod            Perl plain old documentation
-    perlbook           Perl book information
+    perlsec            Perl security
+
+    perlmod            Perl modules: how they work
+    perlmodlib         Perl modules: how to write and use
+    perlmodstyle       Perl modules: how to write modules with style
+    perlmodinstall     Perl modules: how to install from CPAN
+    perlnewmod         Perl modules: preparing a new module for distribution
+
+    perlutil           utilities packaged with the Perl distribution
+
+    perlcompile        Perl compiler suite intro
+
+    perlfilter         Perl source filters
+
+=head2 Internals and C Language Interface
 
     perlembed          Perl ways to embed perl in your C or C++ application
-    perlapio           Perl internal IO abstraction interface
-    perlxs             Perl XS application programming interface
+    perldebguts        Perl debugging guts and tips
     perlxstut          Perl XS tutorial
+    perlxs             Perl XS application programming interface
+    perlclib           Internal replacements for standard C library functions
     perlguts           Perl internal functions for those doing extensions
     perlcall           Perl calling conventions from C
 
+    perlapi            Perl API listing (autogenerated)
+    perlintern         Perl internal functions (autogenerated)
+    perliol            C API for Perl's implementation of IO in Layers
+    perlapio           Perl internal IO abstraction interface
+
+    perlhack           Perl hackers guide
+
+=head2 Miscellaneous
+
+    perlbook           Perl book information
     perltodo           Perl things to do
+
+    perldoc            Look up Perl documentation in Pod format
+
     perlhist           Perl history records
+    perldelta          Perl changes since previous version
+    perl591delta       Perl changes in version 5.9.1
+    perl590delta       Perl changes in version 5.9.0
+    perl584delta       Perl changes in version 5.8.4
+    perl583delta       Perl changes in version 5.8.3
+    perl582delta       Perl changes in version 5.8.2
+    perl581delta       Perl changes in version 5.8.1
+    perl58delta        Perl changes in version 5.8.0
+    perl573delta       Perl changes in version 5.7.3
+    perl572delta       Perl changes in version 5.7.2
+    perl571delta       Perl changes in version 5.7.1
+    perl570delta       Perl changes in version 5.7.0
+    perl561delta       Perl changes in version 5.6.1
+    perl56delta        Perl changes in version 5.6
+    perl5005delta      Perl changes in version 5.005
+    perl5004delta      Perl changes in version 5.004
+
+    perlartistic       Perl Artistic License
+    perlgpl            GNU General Public License
+
+=head2 Language-Specific
+
+    perlcn             Perl for Simplified Chinese (in EUC-CN)
+    perljp             Perl for Japanese (in EUC-JP)
+    perlko             Perl for Korean (in EUC-KR)
+    perltw             Perl for Traditional Chinese (in Big5)
+
+=head2 Platform-Specific
+
+    perlaix            Perl notes for AIX
+    perlamiga          Perl notes for AmigaOS
+    perlapollo         Perl notes for Apollo DomainOS
+    perlbeos           Perl notes for BeOS
+    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
+    perlhpux           Perl notes for HP-UX
+    perlhurd           Perl notes for Hurd
+    perlirix           Perl notes for Irix
+    perlmachten        Perl notes for Power MachTen
+    perlmacos          Perl notes for Mac OS (Classic)
+    perlmacosx         Perl notes for Mac OS X
+    perlmint           Perl notes for MiNT
+    perlmpeix          Perl notes for MPE/iX
+    perlnetware        Perl notes for NetWare
+    perlos2            Perl notes for OS/2
+    perlos390          Perl notes for OS/390
+    perlos400          Perl notes for OS/400
+    perlplan9          Perl notes for Plan 9
+    perlqnx            Perl notes for QNX
+    perlsolaris        Perl notes for Solaris
+    perltru64          Perl notes for Tru64
+    perluts            Perl notes for UTS
+    perlvmesa          Perl notes for VM/ESA
+    perlvms            Perl notes for VMS
+    perlvos            Perl notes for Stratus VOS
+    perlwin32          Perl notes for Windows
 
-(If you're intending to read these straight through for the first time,
-the suggested order will tend to reduce the number of forward references.)
 
 By default, the manpages listed above are installed in the 
 F</usr/local/man/> directory.  
@@ -117,17 +238,17 @@ 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 quite closely to C
+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 very quickly.  Although optimized for
+scan large amounts of data quickly.  Although optimized for
 scanning text, Perl can also deal with binary data, and can make dbm
 files look like hashes.  Setuid Perl scripts are safer than C programs
-through a dataflow tracing mechanism which prevents many stupid
+through a dataflow tracing mechanism that prevents many stupid
 security holes.
 
 If you have a problem that would ordinarily use B<sed> or B<awk> or
@@ -141,58 +262,81 @@ 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
+=over 4
 
-=item * modularity and reusability using innumerable modules 
+=item *
+
+modularity and reusability using innumerable modules 
 
 Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
 
-=item * embeddable and extensible 
+=item *
+
+embeddable and extensible 
 
 Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
 L<perlguts>, and L<xsubpp>.
 
-=item * roll-your-own magic variables (including multiple simultaneous DBM implementations)
+=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
+=item *
+
+subroutines can now be overridden, autoloaded, and prototyped
 
 Described in L<perlsub>.
 
-=item * arbitrarily nested data structures and anonymous functions
+=item *
+
+arbitrarily nested data structures and anonymous functions
 
 Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
 
-=item * object-oriented programming
+=item *
 
-Described in L<perlobj>, L<perltoot>, and L<perlbot>.
+object-oriented programming
 
-=item * compilability into C code or Perl bytecode
+Described in L<perlobj>, L<perlboot>, L<perltoot>, L<perltooc>,
+and L<perlbot>.
 
-Described in L<B> and L<B::Bytecode>.
+=item *
 
-=item * support for light-weight processes (threads)
+support for light-weight processes (threads)
 
-Described in L<perlthrtut> and L<Thread>.
+Described in L<perlthrtut> and L<threads>.
 
-=item * support for internationalization, localization, and Unicode 
+=item *
 
-Described in L<perllocale> and L<utf8>.
+support for Unicode, internationalization, and localization
 
-=item * lexical scoping
+Described in L<perluniintro>, L<perllocale> and L<Locale::Maketext>.
+
+=item *
+
+lexical scoping
 
 Described in L<perlsub>.
 
-=item * regular expression enhancements
+=item *
+
+regular expression enhancements
 
 Described in L<perlre>, with additional examples in L<perlop>.
 
-=item * enhanced debugger and interactive Perl environment, with intregrated editor support
+=item *
+
+enhanced debugger and interactive Perl environment,
+with integrated editor support
+
+Described in L<perldebtut>, L<perldebug> and L<perldebguts>.
 
-Described in L<perldebug>.
+=item *
 
-=item * POSIX 1003.1 compliant library
+POSIX 1003.1 compliant library
 
 Described in L<POSIX>.
 
@@ -202,76 +346,9 @@ Okay, that's I<definitely> enough hype.
 
 =head1 AVAILABILITY
 
-Perl is available for the vast majority of operating system platforms,
-including most Unix-like platforms. The following situation is as of
-February 1999 and Perl 5.005_03.
-
-The following platforms are able to build Perl from the standard
-source code distribution available at
-http://www.perl.com/CPAN/src/index.html
-
-        AIX             Linux           SCO ODT/OSR
-        A/UX            MachTen         Solaris
-        BeOS            MPE/iX          SunOS
-        BSD/OS          NetBSD          SVR4
-        DG/UX           NextSTEP        Tru64 UNIX      3)
-        DomainOS        OpenBSD         Ultrix                  
-        DOS DJGPP 1)    OpenSTEP        UNICOS                  
-        DYNIX/ptx       OS/2            VMS                     
-        FreeBSD         OS390     2)    VOS 
-        HP-UX           PowerMAX        Windows 3.1     1)      
-        Hurd            QNX             Windows 95      1) 4)   
-        IRIX                            Windows 98      1) 4)   
-                                        Windows NT      1) 4)
-
-        1) in DOS mode either the DOS or OS/2 ports can be used
-        2) formerly known as MVS
-        3) formerly known as Digital UNIX and before that DEC OSF/1     
-        4) compilers: Borland, Cygwin32, Mingw32 EGCS/GCC, VC++
-                                        
-The following platforms have been known to build Perl from the source
-but for the Perl release 5.005_03 we haven't been able to verify them,
-either because the hardware/software platforms are rather rare or
-because we don't have an active champion on these platforms--or both.
-                                       
-        3b1             FPS             Plan 9
-        AmigaOS         GENIX           PowerUX
-        ConvexOS        Greenhills      RISC/os         
-        CX/UX           ISC             Stellar         
-        DC/OSx          MachTen 68k     SVR2            
-        DDE SMES        MiNT            TI1500          
-        DOS EMX         MPC             TitanOS         
-        Dynix           NEWS-OS         UNICOS/mk       
-        EP/IX           Opus            Unisys Dynix    
-        ESIX                           Unixware        
-
-The following platforms are planned to be supported in the standard
-source code distribution of the Perl release 5.006 but are not
-supported in the Perl release 5.005_03:
-
-        BS2000
-       Netware
-       Rhapsody
-        VM/ESA
-
-The following platforms have their own source code distributions and
-binaries available via http://www.perl.com/CPAN/ports/index.html.
-
-                               Perl release
-
-       AS/400                  5.003
-       MacOS                   5.004
-       Netware                 5.003_07
-       Tandem Guardian         5.004
-
-The following platforms have only binaries available via
-http://www.perl.com/CPAN/ports/index.html.
-
-                               Perl release
-
-       Acorn RISCOS            5.005_02
-       AOS                     5.002
-       LynxOS                  5.004_02
+Perl is available for most operating systems, including virtually
+all Unix-like platforms.  See L<perlport/"Supported Platforms">
+for a listing.
 
 =head1 ENVIRONMENT
 
@@ -295,12 +372,14 @@ Perl developers, please write to perl-thanks@perl.org .
  a2p   awk to perl translator
  s2p   sed to perl translator
 
- http://www.perl.com/      the Perl Home Page
- http://www.perl.com/CPAN   the Comphrehensive Perl Archive
+ http://www.perl.com/       the Perl Home Page
+ http://www.cpan.org/       the Comprehensive Perl Archive
+ http://www.perl.org/       Perl Mongers (Perl user groups)
 
 =head1 DIAGNOSTICS
 
-The B<-w> switch produces some lovely diagnostics.
+The C<use warnings> pragma (and the B<-w> switch) produces some 
+lovely diagnostics.
 
 See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
 diagnostics> pragma automatically turns Perl's normally terse warnings
@@ -308,7 +387,7 @@ and errors into these longer forms.
 
 Compilation errors will tell you the line number of the error, with an
 indication of the next token or token type that was to be examined.
-(In the case of a script passed to Perl via B<-e> switches, each
+(In a script passed to Perl via B<-e> switches, each
 B<-e> is counted as one line.)
 
 Setuid scripts have additional constraints that can produce error
@@ -338,8 +417,8 @@ affected by wraparound).
 
 You may mail your bug reports (be sure to include full configuration
 information as output by the myconfig program in the perl source
-tree, or by C<perl -V>) to perlbug@perl.com .  If you've succeeded
-in compiling perl, the perlbug script in the utils/ subdirectory
+tree, or by C<perl -V>) to perlbug@perl.org .  If you've succeeded
+in compiling perl, the B<perlbug> script in the F<utils/> subdirectory
 can be used to help mail in a bug report.
 
 Perl actually stands for Pathologically Eclectic Rubbish Lister, but