This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
sort pragma tweaks.
[perl5.git] / pod / perl.pod
... / ...
CommitLineData
1=head1 NAME
2
3perl - Practical Extraction and Report Language
4
5=head1 SYNOPSIS
6
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> ]...>
14
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.
20
21=head2 Overview
22
23 perl Perl overview (this section)
24 perlintro Perl introduction for beginners
25 perltoc Perl documentation table of contents
26
27=head2 Tutorials
28
29 perlreftut Perl references short introduction
30 perldsc Perl data structures intro
31 perllol Perl data structures: arrays of arrays
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
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
56
57=head2 Reference Manual
58
59 perlsyn Perl syntax
60 perldata Perl data structures
61 perlop Perl operators and precedence
62 perlsub Perl subroutines
63 perlfunc Perl built-in functions
64 perlopentut Perl open() tutorial
65 perlpod Perl plain old documentation
66 perlpodspec Perl plain old documentation format specification
67 perlrun Perl execution and options
68 perldiag Perl diagnostic messages
69 perllexwarn Perl warnings and their control
70 perldebug Perl debugging
71 perlvar Perl predefined variables
72 perlre Perl regular expressions, the rest of the story
73 perlref Perl references, the rest of the story
74 perlform Perl formats
75 perlobj Perl objects
76 perltie Perl objects hidden behind simple variables
77 perldbmfilter Perl DBM filters
78
79 perlipc Perl interprocess communication
80 perlfork Perl fork() information
81 perlnumber Perl number semantics
82
83 perlthrtut Perl threads tutorial
84 perlothrtut Old Perl threads tutorial
85
86 perlport Perl portability guide
87 perllocale Perl locale support
88 perluniintro Perl Unicode introduction
89 perlunicode Perl Unicode support
90 perlebcdic Considerations for running Perl on EBCDIC platforms
91
92 perlsec Perl security
93
94 perlmod Perl modules: how they work
95 perlmodlib Perl modules: how to write and use
96 perlmodstyle Perl modules: how to write modules with style
97 perlmodinstall Perl modules: how to install from CPAN
98 perlnewmod Perl modules: preparing a new module for distribution
99
100 perlutil utilities packaged with the Perl distribution
101
102 perlcompile Perl compiler suite intro
103
104 perlfilter Perl source filters
105
106=head2 Internals and C Language Interface
107
108 perlembed Perl ways to embed perl in your C or C++ application
109 perldebguts Perl debugging guts and tips
110 perlxstut Perl XS tutorial
111 perlxs Perl XS application programming interface
112 perlclib Internal replacements for standard C library functions
113 perlguts Perl internal functions for those doing extensions
114 perlcall Perl calling conventions from C
115
116 perlapi Perl API listing (autogenerated)
117 perlintern Perl internal functions (autogenerated)
118 perliol C API for Perl's implementation of IO in Layers
119 perlapio Perl internal IO abstraction interface
120
121 perlhack Perl hackers guide
122
123=head2 Miscellaneous
124
125 perlbook Perl book information
126 perltodo Perl things to do
127
128 perlhist Perl history records
129 perldelta Perl changes since previous version
130 perl572delta Perl changes in version 5.7.2
131 perl571delta Perl changes in version 5.7.1
132 perl570delta Perl changes in version 5.7.0
133 perl56delta Perl changes in version 5.6
134 perl5005delta Perl changes in version 5.005
135 perl5004delta Perl changes in version 5.004
136
137=head2 Platform-Specific
138
139 perlaix Perl notes for AIX
140 perlamiga Perl notes for AmigaOS
141 perlapollo Perl notes for Apollo DomainOS
142 perlbeos Perl notes for BeOS
143 perlbs2000 Perl notes for POSIX-BC BS2000
144 perlce Perl notes for WinCE
145 perlcygwin Perl notes for Cygwin
146 perldgux Perl notes for DG/UX
147 perldos Perl notes for DOS
148 perlepoc Perl notes for EPOC
149 perlhpux Perl notes for HP-UX
150 perlhurd Perl notes for Hurd
151 perlmachten Perl notes for Power MachTen
152 perlmacos Perl notes for Mac OS (Classic)
153 perlmint Perl notes for MiNT
154 perlmpeix Perl notes for MPE/iX
155 perlnetware Perl notes for NetWare
156 perlos2 Perl notes for OS/2
157 perlos390 Perl notes for OS/390
158 perlplan9 Perl notes for Plan 9
159 perlqnx Perl notes for QNX
160 perlsolaris Perl notes for Solaris
161 perltru64 Perl notes for Tru64
162 perluts Perl notes for UTS
163 perlvmesa Perl notes for VM/ESA
164 perlvms Perl notes for VMS
165 perlvos Perl notes for Stratus VOS
166 perlwin32 Perl notes for Windows
167
168
169By default, the manpages listed above are installed in the
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:
183
184 perl -V:man.dir
185
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.
191
192If that doesn't work for some reason, you can still use the
193supplied F<perldoc> script to view module information. You might
194also look into getting a replacement man program.
195
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
202Perl is a language optimized for scanning arbitrary
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,
207elegant, minimal).
208
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
213BASIC-PLUS.) Expression syntax corresponds closely to C
214expression syntax. Unlike most Unix utilities, Perl does not
215arbitrarily limit the size of your data--if you've got the memory,
216Perl can slurp in your whole file as a single string. Recursion is of
217unlimited depth. And the tables used by hashes (sometimes called
218"associative arrays") grow as necessary to prevent degraded
219performance. Perl can use sophisticated pattern matching techniques to
220scan large amounts of data quickly. Although optimized for
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
223through a dataflow tracing mechanism that prevents many stupid
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.
231
232But wait, there's more...
233
234Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
235rewrite that provides the following additional benefits:
236
237=over 4
238
239=item *
240
241modularity and reusability using innumerable modules
242
243Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
244
245=item *
246
247embeddable and extensible
248
249Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
250L<perlguts>, and L<xsubpp>.
251
252=item *
253
254roll-your-own magic variables (including multiple simultaneous DBM implementations)
255
256Described in L<perltie> and L<AnyDBM_File>.
257
258=item *
259
260subroutines can now be overridden, autoloaded, and prototyped
261
262Described in L<perlsub>.
263
264=item *
265
266arbitrarily nested data structures and anonymous functions
267
268Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
269
270=item *
271
272object-oriented programming
273
274Described in L<perlobj>, L<perlboot>, L<perltoot>, L<perltooc>,
275and L<perlbot>.
276
277=item *
278
279compilability into C code or Perl bytecode
280
281Described in L<B> and L<B::Bytecode>.
282
283=item *
284
285support for light-weight processes (threads)
286
287Described in L<perlthrtut> and L<Thread>.
288
289=item *
290
291support for internationalization, localization, and Unicode
292
293Described in L<perllocale> and L<utf8>.
294
295=item *
296
297lexical scoping
298
299Described in L<perlsub>.
300
301=item *
302
303regular expression enhancements
304
305Described in L<perlre>, with additional examples in L<perlop>.
306
307=item *
308
309enhanced debugger and interactive Perl environment,
310with integrated editor support
311
312Described in L<perldebtut>, L<perldebug> and L<perldebguts>.
313
314=item *
315
316POSIX 1003.1 compliant library
317
318Described in L<POSIX>.
319
320=back
321
322Okay, that's I<definitely> enough hype.
323
324=head1 AVAILABILITY
325
326Perl is available for most operating systems, including virtually
327all Unix-like platforms. See L<perlport/"Supported Platforms">
328for a listing.
329
330=head1 ENVIRONMENT
331
332See L<perlrun>.
333
334=head1 AUTHOR
335
336Larry Wall <larry@wall.org>, with the help of oodles of other folks.
337
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
341Perl developers, please write to perl-thanks@perl.org .
342
343=head1 FILES
344
345 "@INC" locations of perl libraries
346
347=head1 SEE ALSO
348
349 a2p awk to perl translator
350 s2p sed to perl translator
351
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)
355
356=head1 DIAGNOSTICS
357
358The C<use warnings> pragma (and the B<-w> switch) produces some
359lovely diagnostics.
360
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.
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.
367(In a script passed to Perl via B<-e> switches, each
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
381operations such as type casting, atof(), and floating-point
382output with sprintf().
383
384If your stdio requires a seek or eof between reads and writes on a
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
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).
394
395You may mail your bug reports (be sure to include full configuration
396information as output by the myconfig program in the perl source
397tree, or by C<perl -V>) to perlbug@perl.org . If you've succeeded
398in compiling perl, the B<perlbug> script in the F<utils/> subdirectory
399can be used to help mail in a bug report.
400
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
409The three principal virtues of a programmer are Laziness,
410Impatience, and Hubris. See the Camel Book for why.
411