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
1=head1 NAME
2
3perl - Practical Extraction and Report Language
4
5=head1 SYNOPSIS
6
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> ]...>
17
18For ease of access, the Perl manual has been split up into a number
19of sections:
20
21 perl Perl overview (this section)
22 perldelta Perl changes since previous version
23 perl5005delta Perl changes in version 5.005
24 perl5004delta Perl changes in version 5.004
25 perlfaq Perl frequently asked questions
26 perltoc Perl documentation table of contents
27
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
34 perlopentut Perl open() tutorial
35 perlvar Perl predefined variables
36 perlsub Perl subroutines
37 perlopentut Perl opening things tutorial
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
43
44 perlref Perl references
45 perlreftut Perl references short introduction
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
53 perlthrtut Perl threads tutorial
54
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
61
62 perlpod Perl plain old documentation
63 perlbook Perl book information
64
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
71
72 perlhist Perl history records
73
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
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:
91
92 perl -V:man.dir
93
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.
99
100If that doesn't work for some reason, you can still use the
101supplied F<perldoc> script to view module information. You might
102also look into getting a replacement man program.
103
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
110Perl is a language optimized for scanning arbitrary
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,
115elegant, minimal).
116
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
122expression syntax. Unlike most Unix utilities, Perl does not
123arbitrarily limit the size of your data--if you've got the memory,
124Perl can slurp in your whole file as a single string. Recursion is of
125unlimited depth. And the tables used by hashes (sometimes called
126"associative arrays") grow as necessary to prevent degraded
127performance. Perl can use sophisticated pattern matching techniques to
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.
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
168to better privacy for "programming in the large". Anonymous
169subroutines exhibit deep binding of lexical variables (closures).
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
191=item * Embeddable and Extensible
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
197supported, and Perl itself can be made into a dynamic library.
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
222semantics for undefined subroutine calls. It's not for just autoloading.
223
224=item * Regular expression enhancements
225
226You can now specify nongreedy quantifiers. You can now do grouping
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
232=item * Innumerable Unbundled Modules
233
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.
237
238=item * Compilability
239
240While not yet in full production mode, a working perl-to-C compiler
241does exist. It can generate portable byte code, simple C, or
242optimized C code.
243
244=back
245
246Okay, that's I<definitely> enough hype.
247
248=head1 ENVIRONMENT
249
250See L<perlrun>.
251
252=head1 AUTHOR
253
254Larry Wall <F<larry@wall.org>>, with the help of oodles of other folks.
255
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
261=head1 FILES
262
263 "@INC" locations of perl libraries
264
265=head1 SEE ALSO
266
267 a2p awk to perl translator
268
269 s2p sed to perl translator
270
271=head1 DIAGNOSTICS
272
273The B<-w> switch produces some lovely diagnostics.
274
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.
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
295operations such as type casting, atof(), and floating-point
296output with sprintf().
297
298If your stdio requires a seek or eof between reads and writes on a
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
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).
308
309You may mail your bug reports (be sure to include full configuration
310information as output by the myconfig program in the perl source tree,
311or by C<perl -V>) to <F<perlbug@perl.com>>.
312If you've succeeded in compiling perl, the perlbug script in the utils/
313subdirectory can be used to help mail in a bug report.
314
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
323The three principal virtues of a programmer are Laziness,
324Impatience, and Hubris. See the Camel Book for why.
325