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