This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
note how to find REG_INFTY limit
[perl5.git] / pod / perl.pod
CommitLineData
a0d0e21e
LW
1=head1 NAME
2
3perl - Practical Extraction and Report Language
4
5=head1 SYNOPSIS
6
94d58c47 7B<perl> S<[ B<-sTuU> ]>
8 S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
9 S<[ B<-cw> ] [ B<-d>[:I<debugger>] ] [ B<-D>[I<number/list>] ]>
10 S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal>] ]>
11 S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ]>
12 S<[ B<-P> ]>
13 S<[ B<-S> ]>
14 S<[ B<-x>[I<dir>] ]>
15 S<[ B<-i>[I<extension>] ]>
16 S<[ B<-e> I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
c07a80fd 17
a0d0e21e
LW
18For ease of access, the Perl manual has been split up into a number
19of sections:
20
fb9cefb4
GS
21 perl Perl overview (this section)
22 perldelta Perl changes since previous version
9bc80687
GS
23 perl5005delta Perl changes in version 5.005
24 perl5004delta Perl changes in version 5.004
fb9cefb4
GS
25 perlfaq Perl frequently asked questions
26 perltoc Perl documentation table of contents
760ac839 27
fb9cefb4
GS
28 perldata Perl data structures
29 perlsyn Perl syntax
30 perlop Perl operators and precedence
31 perlre Perl regular expressions
32 perlrun Perl execution and options
33 perlfunc Perl builtin functions
2605996a 34 perlopentut Perl open() tutorial
fb9cefb4
GS
35 perlvar Perl predefined variables
36 perlsub Perl subroutines
f8284313 37 perlopentut Perl opening things tutorial
fb9cefb4
GS
38 perlmod Perl modules: how they work
39 perlmodlib Perl modules: how to write and use
40 perlmodinstall Perl modules: how to install from CPAN
41 perlform Perl formats
42 perllocale Perl locale support
760ac839 43
fb9cefb4 44 perlref Perl references
a1e2a320 45 perlreftut Perl references short introduction
fb9cefb4
GS
46 perldsc Perl data structures intro
47 perllol Perl data structures: lists of lists
48 perltoot Perl OO tutorial
49 perlobj Perl objects
50 perltie Perl objects hidden behind simple variables
51 perlbot Perl OO tricks and examples
52 perlipc Perl interprocess communication
2605996a 53 perlthrtut Perl threads tutorial
760ac839 54
fb9cefb4
GS
55 perldebug Perl debugging
56 perldiag Perl diagnostic messages
57 perlsec Perl security
58 perltrap Perl traps for the unwary
59 perlport Perl portability guide
60 perlstyle Perl style guide
760ac839 61
fb9cefb4
GS
62 perlpod Perl plain old documentation
63 perlbook Perl book information
760ac839 64
fb9cefb4
GS
65 perlembed Perl ways to embed perl in your C or C++ application
66 perlapio Perl internal IO abstraction interface
67 perlxs Perl XS application programming interface
68 perlxstut Perl XS tutorial
69 perlguts Perl internal functions for those doing extensions
70 perlcall Perl calling conventions from C
a0d0e21e 71
fb9cefb4 72 perlhist Perl history records
d516a115 73
a0d0e21e
LW
74(If you're intending to read these straight through for the first time,
75the suggested order will tend to reduce the number of forward references.)
76
fc952dec
CS
77By default, all of the above manpages are installed in the
78F</usr/local/man/> directory.
79
80Extensive additional documentation for Perl modules is available. The
81default configuration for perl will place this additional documentation
82in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
83subdirectory of the Perl library directory). Some of this additional
84documentation is distributed standard with Perl, but you'll also find
85documentation for third-party modules there.
86
87You should be able to view Perl's documentation with your man(1)
88program by including the proper directories in the appropriate start-up
89files, or in the MANPATH environment variable. To find out where the
90configuration has installed the manpages, type:
16d20bd9 91
760ac839 92 perl -V:man.dir
16d20bd9 93
fc952dec
CS
94If the directories have a common stem, such as F</usr/local/man/man1>
95and F</usr/local/man/man3>, you need only to add that stem
96(F</usr/local/man>) to your man(1) configuration files or your MANPATH
97environment variable. If they do not share a stem, you'll have to add
98both stems.
16d20bd9
AD
99
100If that doesn't work for some reason, you can still use the
4633a7c4
LW
101supplied F<perldoc> script to view module information. You might
102also look into getting a replacement man program.
16d20bd9 103
a0d0e21e
LW
104If something strange has gone wrong with your program and you're not
105sure where you should look for help, try the B<-w> switch first. It
106will often point out exactly where the trouble is.
107
108=head1 DESCRIPTION
109
5f05dabc 110Perl is a language optimized for scanning arbitrary
a0d0e21e
LW
111text files, extracting information from those text files, and printing
112reports based on that information. It's also a good language for many
113system management tasks. The language is intended to be practical
114(easy to use, efficient, complete) rather than beautiful (tiny,
94d58c47 115elegant, minimal).
116
aa689395 117Perl combines (in the author's opinion, anyway) some of the best
118features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
119those languages should have little difficulty with it. (Language
120historians will also note some vestiges of B<csh>, Pascal, and even
121BASIC-PLUS.) Expression syntax corresponds quite closely to C
a0d0e21e
LW
122expression syntax. Unlike most Unix utilities, Perl does not
123arbitrarily limit the size of your data--if you've got the memory,
aa689395 124Perl can slurp in your whole file as a single string. Recursion is of
0f31cffe 125unlimited depth. And the tables used by hashes (sometimes called
aa689395 126"associative arrays") grow as necessary to prevent degraded
0f31cffe 127performance. Perl can use sophisticated pattern matching techniques to
aa689395 128scan large amounts of data very quickly. Although optimized for
129scanning text, Perl can also deal with binary data, and can make dbm
130files look like hashes. Setuid Perl scripts are safer than C programs
131through a dataflow tracing mechanism which prevents many stupid
132security holes.
133
134If you have a problem that would ordinarily use B<sed> or B<awk> or
135B<sh>, but it exceeds their capabilities or must run a little faster,
136and you don't want to write the silly thing in C, then Perl may be for
137you. There are also translators to turn your B<sed> and B<awk>
138scripts into Perl scripts.
a0d0e21e
LW
139
140But wait, there's more...
141
142Perl version 5 is nearly a complete rewrite, and provides
143the following additional benefits:
144
145=over 5
146
147=item * Many usability enhancements
148
149It is now possible to write much more readable Perl code (even within
150regular expressions). Formerly cryptic variable names can be replaced
151by mnemonic identifiers. Error messages are more informative, and the
152optional warnings will catch many of the mistakes a novice might make.
153This cannot be stressed enough. Whenever you get mysterious behavior,
154try the B<-w> switch!!! Whenever you don't get mysterious behavior,
155try using B<-w> anyway.
156
157=item * Simplified grammar
158
159The new yacc grammar is one half the size of the old one. Many of the
160arbitrary grammar rules have been regularized. The number of reserved
161words has been cut by 2/3. Despite this, nearly all old Perl scripts
162will continue to work unchanged.
163
164=item * Lexical scoping
165
166Perl variables may now be declared within a lexical scope, like "auto"
167variables in C. Not only is this more efficient, but it contributes
fc952dec 168to better privacy for "programming in the large". Anonymous
5f05dabc 169subroutines exhibit deep binding of lexical variables (closures).
a0d0e21e
LW
170
171=item * Arbitrarily nested data structures
172
173Any scalar value, including any array element, may now contain a
174reference to any other variable or subroutine. You can easily create
175anonymous variables and subroutines. Perl manages your reference
176counts for you.
177
178=item * Modularity and reusability
179
180The Perl library is now defined in terms of modules which can be easily
181shared among various packages. A package may choose to import all or a
182portion of a module's published interface. Pragmas (that is, compiler
183directives) are defined and used by the same mechanism.
184
185=item * Object-oriented programming
186
187A package can function as a class. Dynamic multiple inheritance and
188virtual methods are supported in a straightforward manner and with very
189little new syntax. Filehandles may now be treated as objects.
190
c07a80fd 191=item * Embeddable and Extensible
a0d0e21e
LW
192
193Perl may now be embedded easily in your C or C++ application, and can
194either call or be called by your routines through a documented
195interface. The XS preprocessor is provided to make it easy to glue
196your C or C++ routines into Perl. Dynamic loading of modules is
5f05dabc 197supported, and Perl itself can be made into a dynamic library.
a0d0e21e
LW
198
199=item * POSIX compliant
200
201A major new module is the POSIX module, which provides access to all
202available POSIX routines and definitions, via object classes where
203appropriate.
204
205=item * Package constructors and destructors
206
207The new BEGIN and END blocks provide means to capture control as
208a package is being compiled, and after the program exits. As a
209degenerate case they work just like awk's BEGIN and END when you
210use the B<-p> or B<-n> switches.
211
212=item * Multiple simultaneous DBM implementations
213
214A Perl program may now access DBM, NDBM, SDBM, GDBM, and Berkeley DB
215files from the same script simultaneously. In fact, the old dbmopen
216interface has been generalized to allow any variable to be tied
217to an object class which defines its access methods.
218
219=item * Subroutine definitions may now be autoloaded
220
221In fact, the AUTOLOAD mechanism also allows you to define any arbitrary
5f05dabc 222semantics for undefined subroutine calls. It's not for just autoloading.
a0d0e21e
LW
223
224=item * Regular expression enhancements
225
fc952dec 226You can now specify nongreedy quantifiers. You can now do grouping
a0d0e21e
LW
227without creating a backreference. You can now write regular expressions
228with embedded whitespace and comments for readability. A consistent
229extensibility mechanism has been added that is upwardly compatible with
230all old regular expressions.
231
5f05dabc 232=item * Innumerable Unbundled Modules
233
f102b883
TC
234The Comprehensive Perl Archive Network described in L<perlmodlib>
235contains hundreds of plug-and-play modules full of reusable code.
236See F<http://www.perl.com/CPAN> for a site near you.
5f05dabc 237
238=item * Compilability
239
240While not yet in full production mode, a working perl-to-C compiler
fc952dec 241does exist. It can generate portable byte code, simple C, or
5f05dabc 242optimized C code.
243
a0d0e21e
LW
244=back
245
68dc0745 246Okay, that's I<definitely> enough hype.
a0d0e21e
LW
247
248=head1 ENVIRONMENT
249
1e422769 250See L<perlrun>.
a0d0e21e
LW
251
252=head1 AUTHOR
253
9607fc9c 254Larry Wall <F<larry@wall.org>>, with the help of oodles of other folks.
a0d0e21e 255
a99b1639
TP
256If your Perl success stories and testimonials may be of help to others
257who wish to advocate the use of Perl in their applications,
258or if you wish to simply express your gratitude to Larry and the
259Perl developers, please write to <F<perl-thanks@perl.org>>.
260
a0d0e21e
LW
261=head1 FILES
262
5f05dabc 263 "@INC" locations of perl libraries
a0d0e21e
LW
264
265=head1 SEE ALSO
266
267 a2p awk to perl translator
4633a7c4 268
a0d0e21e
LW
269 s2p sed to perl translator
270
271=head1 DIAGNOSTICS
272
273The B<-w> switch produces some lovely diagnostics.
274
5a964f20
TC
275See L<perldiag> for explanations of all Perl's diagnostics. The C<use
276diagnostics> pragma automatically turns Perl's normally terse warnings
277and errors into these longer forms.
a0d0e21e
LW
278
279Compilation errors will tell you the line number of the error, with an
280indication of the next token or token type that was to be examined.
281(In the case of a script passed to Perl via B<-e> switches, each
282B<-e> is counted as one line.)
283
284Setuid scripts have additional constraints that can produce error
285messages such as "Insecure dependency". See L<perlsec>.
286
287Did we mention that you should definitely consider using the B<-w>
288switch?
289
290=head1 BUGS
291
292The B<-w> switch is not mandatory.
293
294Perl is at the mercy of your machine's definitions of various
1b3f7d21
CS
295operations such as type casting, atof(), and floating-point
296output with sprintf().
a0d0e21e 297
748a9306 298If your stdio requires a seek or eof between reads and writes on a
a0d0e21e
LW
299particular stream, so does Perl. (This doesn't apply to sysread()
300and syswrite().)
301
302While none of the built-in data types have any arbitrary size limits
303(apart from memory size), there are still a few arbitrary limits: a
a30ac152
GS
304given variable name may not be longer than 251 characters. Line numbers
305displayed by diagnostics are internally stored as short integers,
306so they are limited to a maximum of 65535 (higher numbers usually being
307affected by wraparound).
a0d0e21e 308
b0607b7a
LV
309You may mail your bug reports (be sure to include full configuration
310information as output by the myconfig program in the perl source tree,
9607fc9c 311or by C<perl -V>) to <F<perlbug@perl.com>>.
c07a80fd 312If you've succeeded in compiling perl, the perlbug script in the utils/
313subdirectory can be used to help mail in a bug report.
4633a7c4 314
a0d0e21e
LW
315Perl actually stands for Pathologically Eclectic Rubbish Lister, but
316don't tell anyone I said that.
317
318=head1 NOTES
319
320The Perl motto is "There's more than one way to do it." Divining
321how many more is left as an exercise to the reader.
322
4633a7c4 323The three principal virtues of a programmer are Laziness,
a0d0e21e 324Impatience, and Hubris. See the Camel Book for why.
16d20bd9 325