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