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