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