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