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