integrate cfgperl changes into mainline, ignoring the
[p5sagit/p5-mst-13.2.git] / pod / perl.pod
CommitLineData
a0d0e21e 1=head1 NAME
2
3perl - Practical Extraction and Report Language
4
5=head1 SYNOPSIS
6
19799a22 7B<perl> S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
8 S<[ B<-cw> ] [ B<-d>[:I<debugger>] ] [ B<-D>[I<number/list>] ]>
9 S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal>] ]>
10 S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ]>
11 S<[ B<-P> ]> S<[ B<-S> ]> S<[ B<-x>[I<dir>] ]>
12 S<[ B<-i>[I<extension>] ]> S<[ B<-e> I<'command'> ]
13 [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
c07a80fd 14
14218588 15For ease of access, the Perl manual has been split up into several
16sections:
a0d0e21e 17
fb9cefb4 18 perl Perl overview (this section)
19 perldelta Perl changes since previous version
9bc80687 20 perl5005delta Perl changes in version 5.005
21 perl5004delta Perl changes in version 5.004
fb9cefb4 22 perlfaq Perl frequently asked questions
23 perltoc Perl documentation table of contents
760ac839 24
fb9cefb4 25 perldata Perl data structures
26 perlsyn Perl syntax
27 perlop Perl operators and precedence
28 perlre Perl regular expressions
29 perlrun Perl execution and options
30 perlfunc Perl builtin functions
2605996a 31 perlopentut Perl open() tutorial
fb9cefb4 32 perlvar Perl predefined variables
33 perlsub Perl subroutines
34 perlmod Perl modules: how they work
35 perlmodlib Perl modules: how to write and use
36 perlmodinstall Perl modules: how to install from CPAN
37 perlform Perl formats
49877630 38 perlunicode Perl unicode support
fb9cefb4 39 perllocale Perl locale support
760ac839 40
a1e2a320 41 perlreftut Perl references short introduction
19799a22 42 perlref Perl references, the rest of the story
fb9cefb4 43 perldsc Perl data structures intro
19799a22 44 perllol Perl data structures: arrays of arrays
694468e3 45 perlboot Perl OO tutorial for beginners
19799a22 46 perltoot Perl OO tutorial, part 1
47 perltootc Perl OO tutorial, part 2
fb9cefb4 48 perlobj Perl objects
49 perltie Perl objects hidden behind simple variables
50 perlbot Perl OO tricks and examples
51 perlipc Perl interprocess communication
7766f137 52 perlfork Perl fork() information
2605996a 53 perlthrtut Perl threads tutorial
49877630 54 perllexwarn Perl warnings and their control
c93fa817 55 perlfilter Perl source filters
49877630 56 perldbmfilter Perl DBM filters
760ac839 57
54a137f5 58 perlcompile Perl compiler suite intro
fb9cefb4 59 perldebug Perl debugging
60 perldiag Perl diagnostic messages
ac65edd0 61 perlnumber Perl number semantics
fb9cefb4 62 perlsec Perl security
63 perltrap Perl traps for the unwary
64 perlport Perl portability guide
65 perlstyle Perl style guide
760ac839 66
fb9cefb4 67 perlpod Perl plain old documentation
68 perlbook Perl book information
760ac839 69
fb9cefb4 70 perlembed Perl ways to embed perl in your C or C++ application
71 perlapio Perl internal IO abstraction interface
055fd3a9 72 perldebguts Perl debugging guts and tips
fb9cefb4 73 perlxs Perl XS application programming interface
74 perlxstut Perl XS tutorial
75 perlguts Perl internal functions for those doing extensions
76 perlcall Perl calling conventions from C
954c1994 77 perlapi Perl API listing (autogenerated)
78 perlintern Perl internal functions (autogenerated)
a0d0e21e 79
e50bb9a1 80 perltodo Perl things to do
e8cd7eae 81 perlhack Perl hackers guide
fb9cefb4 82 perlhist Perl history records
d516a115 83
49877630 84 perlamiga Perl notes for Amiga
85 perlcygwin Perl notes for Cygwin
86 perldos Perl notes for DOS
87 perlhpux Perl notes for HP-UX
88 perlos2 Perl notes for OS/2
89 perlos390 Perl notes for OS/390
90 perlvms Perl notes for VMS
91 perlwin32 Perl notes for Windows
92
a0d0e21e 93(If you're intending to read these straight through for the first time,
94the suggested order will tend to reduce the number of forward references.)
95
19799a22 96By default, the manpages listed above are installed in the
fc952dec 97F</usr/local/man/> directory.
98
99Extensive additional documentation for Perl modules is available. The
100default configuration for perl will place this additional documentation
101in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
102subdirectory of the Perl library directory). Some of this additional
103documentation is distributed standard with Perl, but you'll also find
104documentation for third-party modules there.
105
106You should be able to view Perl's documentation with your man(1)
107program by including the proper directories in the appropriate start-up
108files, or in the MANPATH environment variable. To find out where the
109configuration has installed the manpages, type:
16d20bd9 110
760ac839 111 perl -V:man.dir
16d20bd9 112
fc952dec 113If the directories have a common stem, such as F</usr/local/man/man1>
114and F</usr/local/man/man3>, you need only to add that stem
115(F</usr/local/man>) to your man(1) configuration files or your MANPATH
116environment variable. If they do not share a stem, you'll have to add
117both stems.
16d20bd9 118
119If that doesn't work for some reason, you can still use the
4633a7c4 120supplied F<perldoc> script to view module information. You might
121also look into getting a replacement man program.
16d20bd9 122
a0d0e21e 123If something strange has gone wrong with your program and you're not
124sure where you should look for help, try the B<-w> switch first. It
125will often point out exactly where the trouble is.
126
127=head1 DESCRIPTION
128
5f05dabc 129Perl is a language optimized for scanning arbitrary
a0d0e21e 130text files, extracting information from those text files, and printing
131reports based on that information. It's also a good language for many
132system management tasks. The language is intended to be practical
133(easy to use, efficient, complete) rather than beautiful (tiny,
94d58c47 134elegant, minimal).
135
aa689395 136Perl combines (in the author's opinion, anyway) some of the best
137features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
138those languages should have little difficulty with it. (Language
139historians will also note some vestiges of B<csh>, Pascal, and even
14218588 140BASIC-PLUS.) Expression syntax corresponds closely to C
a0d0e21e 141expression syntax. Unlike most Unix utilities, Perl does not
142arbitrarily limit the size of your data--if you've got the memory,
aa689395 143Perl can slurp in your whole file as a single string. Recursion is of
0f31cffe 144unlimited depth. And the tables used by hashes (sometimes called
aa689395 145"associative arrays") grow as necessary to prevent degraded
0f31cffe 146performance. Perl can use sophisticated pattern matching techniques to
14218588 147scan large amounts of data quickly. Although optimized for
aa689395 148scanning text, Perl can also deal with binary data, and can make dbm
149files look like hashes. Setuid Perl scripts are safer than C programs
14218588 150through a dataflow tracing mechanism that prevents many stupid
aa689395 151security holes.
152
153If you have a problem that would ordinarily use B<sed> or B<awk> or
154B<sh>, but it exceeds their capabilities or must run a little faster,
155and you don't want to write the silly thing in C, then Perl may be for
156you. There are also translators to turn your B<sed> and B<awk>
157scripts into Perl scripts.
a0d0e21e 158
159But wait, there's more...
160
19799a22 161Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
162rewrite that provides the following additional benefits:
a0d0e21e 163
19799a22 164=over
a0d0e21e 165
19799a22 166=item * modularity and reusability using innumerable modules
a0d0e21e 167
19799a22 168Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
a0d0e21e 169
19799a22 170=item * embeddable and extensible
a0d0e21e 171
19799a22 172Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
173L<perlguts>, and L<xsubpp>.
a0d0e21e 174
19799a22 175=item * roll-your-own magic variables (including multiple simultaneous DBM implementations)
a0d0e21e 176
19799a22 177Described in L<perltie> and L<AnyDBM_File>.
a0d0e21e 178
19799a22 179=item * subroutines can now be overridden, autoloaded, and prototyped
a0d0e21e 180
19799a22 181Described in L<perlsub>.
a0d0e21e 182
19799a22 183=item * arbitrarily nested data structures and anonymous functions
a0d0e21e 184
19799a22 185Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
a0d0e21e 186
19799a22 187=item * object-oriented programming
a0d0e21e 188
19799a22 189Described in L<perlobj>, L<perltoot>, and L<perlbot>.
a0d0e21e 190
19799a22 191=item * compilability into C code or Perl bytecode
a0d0e21e 192
19799a22 193Described in L<B> and L<B::Bytecode>.
a0d0e21e 194
19799a22 195=item * support for light-weight processes (threads)
a0d0e21e 196
19799a22 197Described in L<perlthrtut> and L<Thread>.
a0d0e21e 198
19799a22 199=item * support for internationalization, localization, and Unicode
a0d0e21e 200
19799a22 201Described in L<perllocale> and L<utf8>.
a0d0e21e 202
19799a22 203=item * lexical scoping
a0d0e21e 204
19799a22 205Described in L<perlsub>.
a0d0e21e 206
19799a22 207=item * regular expression enhancements
a0d0e21e 208
19799a22 209Described in L<perlre>, with additional examples in L<perlop>.
a0d0e21e 210
14218588 211=item * enhanced debugger and interactive Perl environment, with integrated editor support
a0d0e21e 212
19799a22 213Described in L<perldebug>.
a0d0e21e 214
19799a22 215=item * POSIX 1003.1 compliant library
5f05dabc 216
19799a22 217Described in L<POSIX>.
5f05dabc 218
a0d0e21e 219=back
220
68dc0745 221Okay, that's I<definitely> enough hype.
a0d0e21e 222
8e465e4e 223=head1 AVAILABILITY
224
14218588 225Perl is available for most operating systems, including virtually
055fd3a9 226all Unix-like platforms. See L<perlport/"Supported Platforms">
227for a listing.
8bc4a6bb 228
a0d0e21e 229=head1 ENVIRONMENT
230
1e422769 231See L<perlrun>.
a0d0e21e 232
233=head1 AUTHOR
234
19799a22 235Larry Wall <larry@wall.org>, with the help of oodles of other folks.
a0d0e21e 236
a99b1639 237If your Perl success stories and testimonials may be of help to others
238who wish to advocate the use of Perl in their applications,
239or if you wish to simply express your gratitude to Larry and the
19799a22 240Perl developers, please write to perl-thanks@perl.org .
a99b1639 241
a0d0e21e 242=head1 FILES
243
5f05dabc 244 "@INC" locations of perl libraries
a0d0e21e 245
246=head1 SEE ALSO
247
248 a2p awk to perl translator
249 s2p sed to perl translator
250
19799a22 251 http://www.perl.com/ the Perl Home Page
5a3e7812 252 http://www.perl.com/CPAN the Comprehensive Perl Archive
19799a22 253
a0d0e21e 254=head1 DIAGNOSTICS
255
9f1b1f2d 256The C<use warnings> pragma (and the B<-w> switch) produces some
257lovely diagnostics.
a0d0e21e 258
5a964f20 259See L<perldiag> for explanations of all Perl's diagnostics. The C<use
260diagnostics> pragma automatically turns Perl's normally terse warnings
261and errors into these longer forms.
a0d0e21e 262
263Compilation errors will tell you the line number of the error, with an
264indication of the next token or token type that was to be examined.
14218588 265(In a script passed to Perl via B<-e> switches, each
a0d0e21e 266B<-e> is counted as one line.)
267
268Setuid scripts have additional constraints that can produce error
269messages such as "Insecure dependency". See L<perlsec>.
270
271Did we mention that you should definitely consider using the B<-w>
272switch?
273
274=head1 BUGS
275
276The B<-w> switch is not mandatory.
277
278Perl is at the mercy of your machine's definitions of various
1b3f7d21 279operations such as type casting, atof(), and floating-point
280output with sprintf().
a0d0e21e 281
748a9306 282If your stdio requires a seek or eof between reads and writes on a
a0d0e21e 283particular stream, so does Perl. (This doesn't apply to sysread()
284and syswrite().)
285
286While none of the built-in data types have any arbitrary size limits
287(apart from memory size), there are still a few arbitrary limits: a
a30ac152 288given variable name may not be longer than 251 characters. Line numbers
289displayed by diagnostics are internally stored as short integers,
290so they are limited to a maximum of 65535 (higher numbers usually being
291affected by wraparound).
a0d0e21e 292
b0607b7a 293You may mail your bug reports (be sure to include full configuration
19799a22 294information as output by the myconfig program in the perl source
295tree, or by C<perl -V>) to perlbug@perl.com . If you've succeeded
055fd3a9 296in compiling perl, the B<perlbug> script in the F<utils/> subdirectory
19799a22 297can be used to help mail in a bug report.
4633a7c4 298
a0d0e21e 299Perl actually stands for Pathologically Eclectic Rubbish Lister, but
300don't tell anyone I said that.
301
302=head1 NOTES
303
304The Perl motto is "There's more than one way to do it." Divining
305how many more is left as an exercise to the reader.
306
4633a7c4 307The three principal virtues of a programmer are Laziness,
a0d0e21e 308Impatience, and Hubris. See the Camel Book for why.
16d20bd9 309