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