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