This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Unicode::UCD: Add charprops_all() public function
[perl5.git] / pod / perl.pod
index c9c7f7c..b6908d2 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
@@ -37,12 +39,12 @@ flag =go perltoc
 flag =ro perlcn perljp perlko perltw
 flag =   perlvms
 
-path perlfaq.*          cpan/perlfaq/lib/
-path perlglossary       cpan/perlfaq/lib/
-path perlxs(?:tut)?     dist/ExtUtils-ParseXS/lib/
-path perldoc            cpan/Pod-Perldoc/lib/
+path perlfaq.*               cpan/perlfaq/lib/
+path perlglossary            cpan/perlfaq/lib/
+path perlxs(?:tut|typemap)?  dist/ExtUtils-ParseXS/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,8 +121,9 @@ 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 Version 6.0.0 properties in Perl
+    perluniprops       Index of Unicode properties in Perl
     perlunitut         Perl Unicode tutorial
     perlebcdic         Considerations for running Perl on EBCDIC platforms
 
@@ -147,6 +150,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
     perldebguts        Perl debugging guts and tips
     perlxstut          Perl XS tutorial
     perlxs             Perl XS application programming interface
+    perlxstypemap      Perl XS C/Perl type conversion tools
     perlclib           Internal replacements for standard C library functions
     perlguts           Perl internal functions for those doing extensions
     perlcall           Perl calling conventions from C
@@ -171,23 +175,37 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 
     perlbook           Perl book information
     perlcommunity      Perl community information
-    perltodo           Perl things to do
 
     perldoc            Look up Perl documentation in Pod format
 
     perlhist           Perl history records
     perldelta          Perl changes since previous version
-    perl5157delta      Perl changes in version 5.15.7
-    perl5156delta      Perl changes in version 5.15.6
-    perl5155delta      Perl changes in version 5.15.5
-    perl5154delta      Perl changes in version 5.15.4
-    perl5153delta      Perl changes in version 5.15.3
-    perl5152delta      Perl changes in version 5.15.2
-    perl5151delta      Perl changes in version 5.15.1
-    perl5150delta      Perl changes in version 5.15.0
+    perl5218delta      Perl changes in version 5.21.8
+    perl5217delta      Perl changes in version 5.21.7
+    perl5216delta      Perl changes in version 5.21.6
+    perl5215delta      Perl changes in version 5.21.5
+    perl5214delta      Perl changes in version 5.21.4
+    perl5213delta      Perl changes in version 5.21.3
+    perl5212delta      Perl changes in version 5.21.2
+    perl5211delta      Perl changes in version 5.21.1
+    perl5210delta      Perl changes in version 5.21.0
+    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
@@ -228,13 +246,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
@@ -243,7 +259,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
@@ -254,9 +269,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
-    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
@@ -267,6 +281,8 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
 
     perlboot           
     perlbot            
+    perlrepository
+    perltodo
     perltooc           
     perltoot           
 
@@ -275,9 +291,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
 
@@ -292,108 +315,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<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
 
@@ -427,8 +364,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
@@ -442,12 +384,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