warn about /(?p{})/ (from Simon Cozens)
[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
55 perldbmfilter Perl DBM filters
760ac839 56
54a137f5 57 perlcompile Perl compiler suite intro
fb9cefb4 58 perldebug Perl debugging
59 perldiag Perl diagnostic messages
ac65edd0 60 perlnumber Perl number semantics
fb9cefb4 61 perlsec Perl security
62 perltrap Perl traps for the unwary
63 perlport Perl portability guide
64 perlstyle Perl style guide
760ac839 65
fb9cefb4 66 perlpod Perl plain old documentation
67 perlbook Perl book information
760ac839 68
fb9cefb4 69 perlembed Perl ways to embed perl in your C or C++ application
70 perlapio Perl internal IO abstraction interface
71 perlxs Perl XS application programming interface
72 perlxstut Perl XS tutorial
73 perlguts Perl internal functions for those doing extensions
74 perlcall Perl calling conventions from C
954c1994 75 perlapi Perl API listing (autogenerated)
76 perlintern Perl internal functions (autogenerated)
a0d0e21e 77
e50bb9a1 78 perltodo Perl things to do
e8cd7eae 79 perlhack Perl hackers guide
fb9cefb4 80 perlhist Perl history records
d516a115 81
49877630 82 perlamiga Perl notes for Amiga
83 perlcygwin Perl notes for Cygwin
84 perldos Perl notes for DOS
85 perlhpux Perl notes for HP-UX
86 perlos2 Perl notes for OS/2
87 perlos390 Perl notes for OS/390
88 perlvms Perl notes for VMS
89 perlwin32 Perl notes for Windows
90
a0d0e21e 91(If you're intending to read these straight through for the first time,
92the suggested order will tend to reduce the number of forward references.)
93
19799a22 94By default, the manpages listed above are installed in the
fc952dec 95F</usr/local/man/> directory.
96
97Extensive additional documentation for Perl modules is available. The
98default configuration for perl will place this additional documentation
99in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
100subdirectory of the Perl library directory). Some of this additional
101documentation is distributed standard with Perl, but you'll also find
102documentation for third-party modules there.
103
104You should be able to view Perl's documentation with your man(1)
105program by including the proper directories in the appropriate start-up
106files, or in the MANPATH environment variable. To find out where the
107configuration has installed the manpages, type:
16d20bd9 108
760ac839 109 perl -V:man.dir
16d20bd9 110
fc952dec 111If the directories have a common stem, such as F</usr/local/man/man1>
112and F</usr/local/man/man3>, you need only to add that stem
113(F</usr/local/man>) to your man(1) configuration files or your MANPATH
114environment variable. If they do not share a stem, you'll have to add
115both stems.
16d20bd9 116
117If that doesn't work for some reason, you can still use the
4633a7c4 118supplied F<perldoc> script to view module information. You might
119also look into getting a replacement man program.
16d20bd9 120
a0d0e21e 121If something strange has gone wrong with your program and you're not
122sure where you should look for help, try the B<-w> switch first. It
123will often point out exactly where the trouble is.
124
125=head1 DESCRIPTION
126
5f05dabc 127Perl is a language optimized for scanning arbitrary
a0d0e21e 128text files, extracting information from those text files, and printing
129reports based on that information. It's also a good language for many
130system management tasks. The language is intended to be practical
131(easy to use, efficient, complete) rather than beautiful (tiny,
94d58c47 132elegant, minimal).
133
aa689395 134Perl combines (in the author's opinion, anyway) some of the best
135features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
136those languages should have little difficulty with it. (Language
137historians will also note some vestiges of B<csh>, Pascal, and even
14218588 138BASIC-PLUS.) Expression syntax corresponds closely to C
a0d0e21e 139expression syntax. Unlike most Unix utilities, Perl does not
140arbitrarily limit the size of your data--if you've got the memory,
aa689395 141Perl can slurp in your whole file as a single string. Recursion is of
0f31cffe 142unlimited depth. And the tables used by hashes (sometimes called
aa689395 143"associative arrays") grow as necessary to prevent degraded
0f31cffe 144performance. Perl can use sophisticated pattern matching techniques to
14218588 145scan large amounts of data quickly. Although optimized for
aa689395 146scanning text, Perl can also deal with binary data, and can make dbm
147files look like hashes. Setuid Perl scripts are safer than C programs
14218588 148through a dataflow tracing mechanism that prevents many stupid
aa689395 149security holes.
150
151If you have a problem that would ordinarily use B<sed> or B<awk> or
152B<sh>, but it exceeds their capabilities or must run a little faster,
153and you don't want to write the silly thing in C, then Perl may be for
154you. There are also translators to turn your B<sed> and B<awk>
155scripts into Perl scripts.
a0d0e21e 156
157But wait, there's more...
158
19799a22 159Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
160rewrite that provides the following additional benefits:
a0d0e21e 161
19799a22 162=over
a0d0e21e 163
19799a22 164=item * modularity and reusability using innumerable modules
a0d0e21e 165
19799a22 166Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
a0d0e21e 167
19799a22 168=item * embeddable and extensible
a0d0e21e 169
19799a22 170Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
171L<perlguts>, and L<xsubpp>.
a0d0e21e 172
19799a22 173=item * roll-your-own magic variables (including multiple simultaneous DBM implementations)
a0d0e21e 174
19799a22 175Described in L<perltie> and L<AnyDBM_File>.
a0d0e21e 176
19799a22 177=item * subroutines can now be overridden, autoloaded, and prototyped
a0d0e21e 178
19799a22 179Described in L<perlsub>.
a0d0e21e 180
19799a22 181=item * arbitrarily nested data structures and anonymous functions
a0d0e21e 182
19799a22 183Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
a0d0e21e 184
19799a22 185=item * object-oriented programming
a0d0e21e 186
19799a22 187Described in L<perlobj>, L<perltoot>, and L<perlbot>.
a0d0e21e 188
19799a22 189=item * compilability into C code or Perl bytecode
a0d0e21e 190
19799a22 191Described in L<B> and L<B::Bytecode>.
a0d0e21e 192
19799a22 193=item * support for light-weight processes (threads)
a0d0e21e 194
19799a22 195Described in L<perlthrtut> and L<Thread>.
a0d0e21e 196
19799a22 197=item * support for internationalization, localization, and Unicode
a0d0e21e 198
19799a22 199Described in L<perllocale> and L<utf8>.
a0d0e21e 200
19799a22 201=item * lexical scoping
a0d0e21e 202
19799a22 203Described in L<perlsub>.
a0d0e21e 204
19799a22 205=item * regular expression enhancements
a0d0e21e 206
19799a22 207Described in L<perlre>, with additional examples in L<perlop>.
a0d0e21e 208
14218588 209=item * enhanced debugger and interactive Perl environment, with integrated editor support
a0d0e21e 210
19799a22 211Described in L<perldebug>.
a0d0e21e 212
19799a22 213=item * POSIX 1003.1 compliant library
5f05dabc 214
19799a22 215Described in L<POSIX>.
5f05dabc 216
a0d0e21e 217=back
218
68dc0745 219Okay, that's I<definitely> enough hype.
a0d0e21e 220
8e465e4e 221=head1 AVAILABILITY
222
14218588 223Perl is available for most operating systems, including virtually
224all Unix-like platforms.
8e465e4e 225
14218588 226As of May 1999, the following platforms are able to build Perl
227from the standard source code distribution available at
19799a22 228http://www.perl.com/CPAN/src/index.html
8e465e4e 229
58493fc4 230 AIX Linux SCO ODT/OSR
231 A/UX MachTen Solaris
232 BeOS MPE/iX SunOS
233 BSD/OS NetBSD SVR4
234 DG/UX NextSTEP Tru64 UNIX 3)
235 DomainOS OpenBSD Ultrix
236 DOS DJGPP 1) OpenSTEP UNICOS
237 DYNIX/ptx OS/2 VMS
238 FreeBSD OS390 2) VOS
239 HP-UX PowerMAX Windows 3.1 1)
240 Hurd QNX Windows 95 1) 4)
241 IRIX Windows 98 1) 4)
242 Windows NT 1) 4)
8e465e4e 243
244 1) in DOS mode either the DOS or OS/2 ports can be used
58493fc4 245 2) formerly known as MVS
246 3) formerly known as Digital UNIX and before that DEC OSF/1
873b149f 247 4) compilers: Borland, Cygwin, Mingw32 EGCS/GCC, VC++
58493fc4 248
14218588 249The following platforms have been known to build Perl from source,
250but we haven't been able to verify their status for the current release,
251either because the hardware/software platforms are rare or
19799a22 252because we don't have an active champion on these platforms--or both.
8e465e4e 253
254 3b1 FPS Plan 9
04251ce8 255 AmigaOS GENIX PowerUX
256 ConvexOS Greenhills RISC/os
257 CX/UX ISC Stellar
258 DC/OSx MachTen 68k SVR2
259 DDE SMES MiNT TI1500
82cda36e 260 DOS EMX MPC TitanOS
261 Dynix NEWS-OS UNICOS/mk
262 EP/IX Opus Unisys Dynix
263 ESIX Unixware
8e465e4e 264
14218588 265Support for the following platforms is planned for the next major
266Perl release.
8e465e4e 267
268 BS2000
00ad96e1 269 Netware
270 Rhapsody
8e465e4e 271 VM/ESA
272
273The following platforms have their own source code distributions and
19799a22 274binaries available via http://www.perl.com/CPAN/ports/index.html.
8e465e4e 275
276 Perl release
277
278 AS/400 5.003
2e04d155 279 MacOS 5.004
04251ce8 280 Netware 5.003_07
8e465e4e 281 Tandem Guardian 5.004
282
283The following platforms have only binaries available via
19799a22 284http://www.perl.com/CPAN/ports/index.html.
8e465e4e 285
286 Perl release
287
d845c4a6 288 Acorn RISCOS 5.005_02
8e465e4e 289 AOS 5.002
290 LynxOS 5.004_02
8e465e4e 291
a0d0e21e 292=head1 ENVIRONMENT
293
1e422769 294See L<perlrun>.
a0d0e21e 295
296=head1 AUTHOR
297
19799a22 298Larry Wall <larry@wall.org>, with the help of oodles of other folks.
a0d0e21e 299
a99b1639 300If your Perl success stories and testimonials may be of help to others
301who wish to advocate the use of Perl in their applications,
302or if you wish to simply express your gratitude to Larry and the
19799a22 303Perl developers, please write to perl-thanks@perl.org .
a99b1639 304
a0d0e21e 305=head1 FILES
306
5f05dabc 307 "@INC" locations of perl libraries
a0d0e21e 308
309=head1 SEE ALSO
310
311 a2p awk to perl translator
312 s2p sed to perl translator
313
19799a22 314 http://www.perl.com/ the Perl Home Page
5a3e7812 315 http://www.perl.com/CPAN the Comprehensive Perl Archive
19799a22 316
a0d0e21e 317=head1 DIAGNOSTICS
318
319The B<-w> switch produces some lovely diagnostics.
320
5a964f20 321See L<perldiag> for explanations of all Perl's diagnostics. The C<use
322diagnostics> pragma automatically turns Perl's normally terse warnings
323and errors into these longer forms.
a0d0e21e 324
325Compilation errors will tell you the line number of the error, with an
326indication of the next token or token type that was to be examined.
14218588 327(In a script passed to Perl via B<-e> switches, each
a0d0e21e 328B<-e> is counted as one line.)
329
330Setuid scripts have additional constraints that can produce error
331messages such as "Insecure dependency". See L<perlsec>.
332
333Did we mention that you should definitely consider using the B<-w>
334switch?
335
336=head1 BUGS
337
338The B<-w> switch is not mandatory.
339
340Perl is at the mercy of your machine's definitions of various
1b3f7d21 341operations such as type casting, atof(), and floating-point
342output with sprintf().
a0d0e21e 343
748a9306 344If your stdio requires a seek or eof between reads and writes on a
a0d0e21e 345particular stream, so does Perl. (This doesn't apply to sysread()
346and syswrite().)
347
348While none of the built-in data types have any arbitrary size limits
349(apart from memory size), there are still a few arbitrary limits: a
a30ac152 350given variable name may not be longer than 251 characters. Line numbers
351displayed by diagnostics are internally stored as short integers,
352so they are limited to a maximum of 65535 (higher numbers usually being
353affected by wraparound).
a0d0e21e 354
b0607b7a 355You may mail your bug reports (be sure to include full configuration
19799a22 356information as output by the myconfig program in the perl source
357tree, or by C<perl -V>) to perlbug@perl.com . If you've succeeded
358in compiling perl, the perlbug script in the utils/ subdirectory
359can be used to help mail in a bug report.
4633a7c4 360
a0d0e21e 361Perl actually stands for Pathologically Eclectic Rubbish Lister, but
362don't tell anyone I said that.
363
364=head1 NOTES
365
366The Perl motto is "There's more than one way to do it." Divining
367how many more is left as an exercise to the reader.
368
4633a7c4 369The three principal virtues of a programmer are Laziness,
a0d0e21e 370Impatience, and Hubris. See the Camel Book for why.
16d20bd9 371