change#2879 broke rvalue autovivification of magicals such as ${$num}
[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
19799a22 7B<perl> S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
8 S<[ B<-cw> ] [ B<-d>[:I<debugger>] ] [ B<-D>[I<number/list>] ]>
9 S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal>] ]>
10 S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ]>
11 S<[ B<-P> ]> S<[ B<-S> ]> S<[ B<-x>[I<dir>] ]>
12 S<[ B<-i>[I<extension>] ]> S<[ B<-e> I<'command'> ]
13 [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
c07a80fd 14
14218588 15For ease of access, the Perl manual has been split up into several
16sections:
a0d0e21e 17
fb9cefb4 18 perl Perl overview (this section)
19 perldelta Perl changes since previous version
9bc80687 20 perl5005delta Perl changes in version 5.005
21 perl5004delta Perl changes in version 5.004
fb9cefb4 22 perlfaq Perl frequently asked questions
23 perltoc Perl documentation table of contents
760ac839 24
fb9cefb4 25 perldata Perl data structures
26 perlsyn Perl syntax
27 perlop Perl operators and precedence
28 perlre Perl regular expressions
29 perlrun Perl execution and options
30 perlfunc Perl builtin functions
2605996a 31 perlopentut Perl open() tutorial
fb9cefb4 32 perlvar Perl predefined variables
33 perlsub Perl subroutines
34 perlmod Perl modules: how they work
35 perlmodlib Perl modules: how to write and use
36 perlmodinstall Perl modules: how to install from CPAN
37 perlform Perl formats
49877630 38 perlunicode Perl unicode support
fb9cefb4 39 perllocale Perl locale support
760ac839 40
a1e2a320 41 perlreftut Perl references short introduction
19799a22 42 perlref Perl references, the rest of the story
fb9cefb4 43 perldsc Perl data structures intro
19799a22 44 perllol Perl data structures: arrays of arrays
694468e3 45 perlboot Perl OO tutorial for beginners
19799a22 46 perltoot Perl OO tutorial, part 1
47 perltootc Perl OO tutorial, part 2
fb9cefb4 48 perlobj Perl objects
49 perltie Perl objects hidden behind simple variables
50 perlbot Perl OO tricks and examples
51 perlipc Perl interprocess communication
7766f137 52 perlfork Perl fork() information
2605996a 53 perlthrtut Perl threads tutorial
49877630 54 perllexwarn Perl warnings and their control
c93fa817 55 perlfilter Perl source filters
49877630 56 perldbmfilter Perl DBM filters
760ac839 57
54a137f5 58 perlcompile Perl compiler suite intro
fb9cefb4 59 perldebug Perl debugging
60 perldiag Perl diagnostic messages
ac65edd0 61 perlnumber Perl number semantics
fb9cefb4 62 perlsec Perl security
63 perltrap Perl traps for the unwary
64 perlport Perl portability guide
65 perlstyle Perl style guide
760ac839 66
fb9cefb4 67 perlpod Perl plain old documentation
68 perlbook Perl book information
760ac839 69
fb9cefb4 70 perlembed Perl ways to embed perl in your C or C++ application
71 perlapio Perl internal IO abstraction interface
055fd3a9 72 perldebguts Perl debugging guts and tips
fb9cefb4 73 perlxs Perl XS application programming interface
74 perlxstut Perl XS tutorial
75 perlguts Perl internal functions for those doing extensions
76 perlcall Perl calling conventions from C
954c1994 77 perlapi Perl API listing (autogenerated)
78 perlintern Perl internal functions (autogenerated)
a0d0e21e 79
e50bb9a1 80 perltodo Perl things to do
e8cd7eae 81 perlhack Perl hackers guide
fb9cefb4 82 perlhist Perl history records
d516a115 83
49877630 84 perlamiga Perl notes for Amiga
85 perlcygwin Perl notes for Cygwin
86 perldos Perl notes for DOS
87 perlhpux Perl notes for HP-UX
da369004 88 perlmachten Perl notes for Power MachTen
49877630 89 perlos2 Perl notes for OS/2
90 perlos390 Perl notes for OS/390
91 perlvms Perl notes for VMS
92 perlwin32 Perl notes for Windows
93
a0d0e21e 94(If you're intending to read these straight through for the first time,
95the suggested order will tend to reduce the number of forward references.)
96
19799a22 97By default, the manpages listed above are installed in the
fc952dec 98F</usr/local/man/> directory.
99
100Extensive additional documentation for Perl modules is available. The
101default configuration for perl will place this additional documentation
102in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
103subdirectory of the Perl library directory). Some of this additional
104documentation is distributed standard with Perl, but you'll also find
105documentation for third-party modules there.
106
107You should be able to view Perl's documentation with your man(1)
108program by including the proper directories in the appropriate start-up
109files, or in the MANPATH environment variable. To find out where the
110configuration has installed the manpages, type:
16d20bd9 111
760ac839 112 perl -V:man.dir
16d20bd9 113
fc952dec 114If the directories have a common stem, such as F</usr/local/man/man1>
115and F</usr/local/man/man3>, you need only to add that stem
116(F</usr/local/man>) to your man(1) configuration files or your MANPATH
117environment variable. If they do not share a stem, you'll have to add
118both stems.
16d20bd9 119
120If that doesn't work for some reason, you can still use the
4633a7c4 121supplied F<perldoc> script to view module information. You might
122also look into getting a replacement man program.
16d20bd9 123
a0d0e21e 124If something strange has gone wrong with your program and you're not
125sure where you should look for help, try the B<-w> switch first. It
126will often point out exactly where the trouble is.
127
128=head1 DESCRIPTION
129
5f05dabc 130Perl is a language optimized for scanning arbitrary
a0d0e21e 131text files, extracting information from those text files, and printing
132reports based on that information. It's also a good language for many
133system management tasks. The language is intended to be practical
134(easy to use, efficient, complete) rather than beautiful (tiny,
94d58c47 135elegant, minimal).
136
aa689395 137Perl combines (in the author's opinion, anyway) some of the best
138features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
139those languages should have little difficulty with it. (Language
140historians will also note some vestiges of B<csh>, Pascal, and even
14218588 141BASIC-PLUS.) Expression syntax corresponds closely to C
a0d0e21e 142expression syntax. Unlike most Unix utilities, Perl does not
143arbitrarily limit the size of your data--if you've got the memory,
aa689395 144Perl can slurp in your whole file as a single string. Recursion is of
0f31cffe 145unlimited depth. And the tables used by hashes (sometimes called
aa689395 146"associative arrays") grow as necessary to prevent degraded
0f31cffe 147performance. Perl can use sophisticated pattern matching techniques to
14218588 148scan large amounts of data quickly. Although optimized for
aa689395 149scanning text, Perl can also deal with binary data, and can make dbm
150files look like hashes. Setuid Perl scripts are safer than C programs
14218588 151through a dataflow tracing mechanism that prevents many stupid
aa689395 152security holes.
153
154If you have a problem that would ordinarily use B<sed> or B<awk> or
155B<sh>, but it exceeds their capabilities or must run a little faster,
156and you don't want to write the silly thing in C, then Perl may be for
157you. There are also translators to turn your B<sed> and B<awk>
158scripts into Perl scripts.
a0d0e21e 159
160But wait, there's more...
161
19799a22 162Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
163rewrite that provides the following additional benefits:
a0d0e21e 164
19799a22 165=over
a0d0e21e 166
19799a22 167=item * modularity and reusability using innumerable modules
a0d0e21e 168
19799a22 169Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
a0d0e21e 170
19799a22 171=item * embeddable and extensible
a0d0e21e 172
19799a22 173Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
174L<perlguts>, and L<xsubpp>.
a0d0e21e 175
19799a22 176=item * roll-your-own magic variables (including multiple simultaneous DBM implementations)
a0d0e21e 177
19799a22 178Described in L<perltie> and L<AnyDBM_File>.
a0d0e21e 179
19799a22 180=item * subroutines can now be overridden, autoloaded, and prototyped
a0d0e21e 181
19799a22 182Described in L<perlsub>.
a0d0e21e 183
19799a22 184=item * arbitrarily nested data structures and anonymous functions
a0d0e21e 185
19799a22 186Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
a0d0e21e 187
19799a22 188=item * object-oriented programming
a0d0e21e 189
19799a22 190Described in L<perlobj>, L<perltoot>, and L<perlbot>.
a0d0e21e 191
19799a22 192=item * compilability into C code or Perl bytecode
a0d0e21e 193
19799a22 194Described in L<B> and L<B::Bytecode>.
a0d0e21e 195
19799a22 196=item * support for light-weight processes (threads)
a0d0e21e 197
19799a22 198Described in L<perlthrtut> and L<Thread>.
a0d0e21e 199
19799a22 200=item * support for internationalization, localization, and Unicode
a0d0e21e 201
19799a22 202Described in L<perllocale> and L<utf8>.
a0d0e21e 203
19799a22 204=item * lexical scoping
a0d0e21e 205
19799a22 206Described in L<perlsub>.
a0d0e21e 207
19799a22 208=item * regular expression enhancements
a0d0e21e 209
19799a22 210Described in L<perlre>, with additional examples in L<perlop>.
a0d0e21e 211
14218588 212=item * enhanced debugger and interactive Perl environment, with integrated editor support
a0d0e21e 213
19799a22 214Described in L<perldebug>.
a0d0e21e 215
19799a22 216=item * POSIX 1003.1 compliant library
5f05dabc 217
19799a22 218Described in L<POSIX>.
5f05dabc 219
a0d0e21e 220=back
221
68dc0745 222Okay, that's I<definitely> enough hype.
a0d0e21e 223
8e465e4e 224=head1 AVAILABILITY
225
14218588 226Perl is available for most operating systems, including virtually
055fd3a9 227all Unix-like platforms. See L<perlport/"Supported Platforms">
228for a listing.
8bc4a6bb 229
a0d0e21e 230=head1 ENVIRONMENT
231
1e422769 232See L<perlrun>.
a0d0e21e 233
234=head1 AUTHOR
235
19799a22 236Larry Wall <larry@wall.org>, with the help of oodles of other folks.
a0d0e21e 237
a99b1639 238If your Perl success stories and testimonials may be of help to others
239who wish to advocate the use of Perl in their applications,
240or if you wish to simply express your gratitude to Larry and the
19799a22 241Perl developers, please write to perl-thanks@perl.org .
a99b1639 242
a0d0e21e 243=head1 FILES
244
5f05dabc 245 "@INC" locations of perl libraries
a0d0e21e 246
247=head1 SEE ALSO
248
249 a2p awk to perl translator
250 s2p sed to perl translator
251
19799a22 252 http://www.perl.com/ the Perl Home Page
5a3e7812 253 http://www.perl.com/CPAN the Comprehensive Perl Archive
19799a22 254
a0d0e21e 255=head1 DIAGNOSTICS
256
9f1b1f2d 257The C<use warnings> pragma (and the B<-w> switch) produces some
258lovely diagnostics.
a0d0e21e 259
5a964f20 260See L<perldiag> for explanations of all Perl's diagnostics. The C<use
261diagnostics> pragma automatically turns Perl's normally terse warnings
262and errors into these longer forms.
a0d0e21e 263
264Compilation errors will tell you the line number of the error, with an
265indication of the next token or token type that was to be examined.
14218588 266(In a script passed to Perl via B<-e> switches, each
a0d0e21e 267B<-e> is counted as one line.)
268
269Setuid scripts have additional constraints that can produce error
270messages such as "Insecure dependency". See L<perlsec>.
271
272Did we mention that you should definitely consider using the B<-w>
273switch?
274
275=head1 BUGS
276
277The B<-w> switch is not mandatory.
278
279Perl is at the mercy of your machine's definitions of various
1b3f7d21 280operations such as type casting, atof(), and floating-point
281output with sprintf().
a0d0e21e 282
748a9306 283If your stdio requires a seek or eof between reads and writes on a
a0d0e21e 284particular stream, so does Perl. (This doesn't apply to sysread()
285and syswrite().)
286
287While none of the built-in data types have any arbitrary size limits
288(apart from memory size), there are still a few arbitrary limits: a
a30ac152 289given variable name may not be longer than 251 characters. Line numbers
290displayed by diagnostics are internally stored as short integers,
291so they are limited to a maximum of 65535 (higher numbers usually being
292affected by wraparound).
a0d0e21e 293
b0607b7a 294You may mail your bug reports (be sure to include full configuration
19799a22 295information as output by the myconfig program in the perl source
296tree, or by C<perl -V>) to perlbug@perl.com . If you've succeeded
055fd3a9 297in compiling perl, the B<perlbug> script in the F<utils/> subdirectory
19799a22 298can be used to help mail in a bug report.
4633a7c4 299
a0d0e21e 300Perl actually stands for Pathologically Eclectic Rubbish Lister, but
301don't tell anyone I said that.
302
303=head1 NOTES
304
305The Perl motto is "There's more than one way to do it." Divining
306how many more is left as an exercise to the reader.
307
4633a7c4 308The three principal virtues of a programmer are Laziness,
a0d0e21e 309Impatience, and Hubris. See the Camel Book for why.
16d20bd9 310