This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Sync cfgperl with maint-5.005 change #3000.
[perl5.git] / pod / perl.pod
CommitLineData
a0d0e21e
LW
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
LW
18For ease of access, the Perl manual has been split up into a number
19of sections:
20
fb9cefb4
GS
21 perl Perl overview (this section)
22 perldelta Perl changes since previous version
9bc80687
GS
23 perl5005delta Perl changes in version 5.005
24 perl5004delta Perl changes in version 5.004
fb9cefb4
GS
25 perlfaq Perl frequently asked questions
26 perltoc Perl documentation table of contents
760ac839 27
fb9cefb4
GS
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
2605996a 34 perlopentut Perl open() tutorial
fb9cefb4
GS
35 perlvar Perl predefined variables
36 perlsub Perl subroutines
37 perlmod Perl modules: how they work
38 perlmodlib Perl modules: how to write and use
39 perlmodinstall Perl modules: how to install from CPAN
40 perlform Perl formats
41 perllocale Perl locale support
760ac839 42
fb9cefb4 43 perlref Perl references
a1e2a320 44 perlreftut Perl references short introduction
fb9cefb4
GS
45 perldsc Perl data structures intro
46 perllol Perl data structures: lists of lists
47 perltoot Perl OO tutorial
48 perlobj Perl objects
49 perltie Perl objects hidden behind simple variables
50 perlbot Perl OO tricks and examples
51 perlipc Perl interprocess communication
2605996a 52 perlthrtut Perl threads tutorial
760ac839 53
fb9cefb4
GS
54 perldebug Perl debugging
55 perldiag Perl diagnostic messages
56 perlsec Perl security
57 perltrap Perl traps for the unwary
58 perlport Perl portability guide
59 perlstyle Perl style guide
760ac839 60
fb9cefb4
GS
61 perlpod Perl plain old documentation
62 perlbook Perl book information
760ac839 63
fb9cefb4
GS
64 perlembed Perl ways to embed perl in your C or C++ application
65 perlapio Perl internal IO abstraction interface
66 perlxs Perl XS application programming interface
67 perlxstut Perl XS tutorial
68 perlguts Perl internal functions for those doing extensions
69 perlcall Perl calling conventions from C
a0d0e21e 70
e50bb9a1 71 perltodo Perl things to do
fb9cefb4 72 perlhist Perl history records
d516a115 73
a0d0e21e
LW
74(If you're intending to read these straight through for the first time,
75the suggested order will tend to reduce the number of forward references.)
76
fc952dec
CS
77By default, all of the above manpages are installed in the
78F</usr/local/man/> directory.
79
80Extensive additional documentation for Perl modules is available. The
81default configuration for perl will place this additional documentation
82in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
83subdirectory of the Perl library directory). Some of this additional
84documentation is distributed standard with Perl, but you'll also find
85documentation for third-party modules there.
86
87You should be able to view Perl's documentation with your man(1)
88program by including the proper directories in the appropriate start-up
89files, or in the MANPATH environment variable. To find out where the
90configuration has installed the manpages, type:
16d20bd9 91
760ac839 92 perl -V:man.dir
16d20bd9 93
fc952dec
CS
94If the directories have a common stem, such as F</usr/local/man/man1>
95and F</usr/local/man/man3>, you need only to add that stem
96(F</usr/local/man>) to your man(1) configuration files or your MANPATH
97environment variable. If they do not share a stem, you'll have to add
98both stems.
16d20bd9
AD
99
100If that doesn't work for some reason, you can still use the
4633a7c4
LW
101supplied F<perldoc> script to view module information. You might
102also look into getting a replacement man program.
16d20bd9 103
a0d0e21e
LW
104If something strange has gone wrong with your program and you're not
105sure where you should look for help, try the B<-w> switch first. It
106will often point out exactly where the trouble is.
107
108=head1 DESCRIPTION
109
5f05dabc 110Perl is a language optimized for scanning arbitrary
a0d0e21e
LW
111text files, extracting information from those text files, and printing
112reports based on that information. It's also a good language for many
113system management tasks. The language is intended to be practical
114(easy to use, efficient, complete) rather than beautiful (tiny,
94d58c47 115elegant, minimal).
116
aa689395 117Perl combines (in the author's opinion, anyway) some of the best
118features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
119those languages should have little difficulty with it. (Language
120historians will also note some vestiges of B<csh>, Pascal, and even
121BASIC-PLUS.) Expression syntax corresponds quite closely to C
a0d0e21e
LW
122expression syntax. Unlike most Unix utilities, Perl does not
123arbitrarily limit the size of your data--if you've got the memory,
aa689395 124Perl can slurp in your whole file as a single string. Recursion is of
0f31cffe 125unlimited depth. And the tables used by hashes (sometimes called
aa689395 126"associative arrays") grow as necessary to prevent degraded
0f31cffe 127performance. Perl can use sophisticated pattern matching techniques to
aa689395 128scan large amounts of data very quickly. Although optimized for
129scanning text, Perl can also deal with binary data, and can make dbm
130files look like hashes. Setuid Perl scripts are safer than C programs
131through a dataflow tracing mechanism which prevents many stupid
132security holes.
133
134If you have a problem that would ordinarily use B<sed> or B<awk> or
135B<sh>, but it exceeds their capabilities or must run a little faster,
136and you don't want to write the silly thing in C, then Perl may be for
137you. There are also translators to turn your B<sed> and B<awk>
138scripts into Perl scripts.
a0d0e21e
LW
139
140But wait, there's more...
141
142Perl version 5 is nearly a complete rewrite, and provides
143the following additional benefits:
144
145=over 5
146
147=item * Many usability enhancements
148
149It is now possible to write much more readable Perl code (even within
150regular expressions). Formerly cryptic variable names can be replaced
151by mnemonic identifiers. Error messages are more informative, and the
152optional warnings will catch many of the mistakes a novice might make.
153This cannot be stressed enough. Whenever you get mysterious behavior,
154try the B<-w> switch!!! Whenever you don't get mysterious behavior,
155try using B<-w> anyway.
156
157=item * Simplified grammar
158
159The new yacc grammar is one half the size of the old one. Many of the
160arbitrary grammar rules have been regularized. The number of reserved
161words has been cut by 2/3. Despite this, nearly all old Perl scripts
162will continue to work unchanged.
163
164=item * Lexical scoping
165
166Perl variables may now be declared within a lexical scope, like "auto"
167variables in C. Not only is this more efficient, but it contributes
fc952dec 168to better privacy for "programming in the large". Anonymous
5f05dabc 169subroutines exhibit deep binding of lexical variables (closures).
a0d0e21e
LW
170
171=item * Arbitrarily nested data structures
172
173Any scalar value, including any array element, may now contain a
174reference to any other variable or subroutine. You can easily create
175anonymous variables and subroutines. Perl manages your reference
176counts for you.
177
178=item * Modularity and reusability
179
180The Perl library is now defined in terms of modules which can be easily
181shared among various packages. A package may choose to import all or a
182portion of a module's published interface. Pragmas (that is, compiler
183directives) are defined and used by the same mechanism.
184
185=item * Object-oriented programming
186
187A package can function as a class. Dynamic multiple inheritance and
188virtual methods are supported in a straightforward manner and with very
189little new syntax. Filehandles may now be treated as objects.
190
c07a80fd 191=item * Embeddable and Extensible
a0d0e21e
LW
192
193Perl may now be embedded easily in your C or C++ application, and can
194either call or be called by your routines through a documented
195interface. The XS preprocessor is provided to make it easy to glue
196your C or C++ routines into Perl. Dynamic loading of modules is
5f05dabc 197supported, and Perl itself can be made into a dynamic library.
a0d0e21e
LW
198
199=item * POSIX compliant
200
201A major new module is the POSIX module, which provides access to all
202available POSIX routines and definitions, via object classes where
203appropriate.
204
205=item * Package constructors and destructors
206
207The new BEGIN and END blocks provide means to capture control as
208a package is being compiled, and after the program exits. As a
209degenerate case they work just like awk's BEGIN and END when you
210use the B<-p> or B<-n> switches.
211
212=item * Multiple simultaneous DBM implementations
213
214A Perl program may now access DBM, NDBM, SDBM, GDBM, and Berkeley DB
215files from the same script simultaneously. In fact, the old dbmopen
216interface has been generalized to allow any variable to be tied
217to an object class which defines its access methods.
218
219=item * Subroutine definitions may now be autoloaded
220
221In fact, the AUTOLOAD mechanism also allows you to define any arbitrary
5f05dabc 222semantics for undefined subroutine calls. It's not for just autoloading.
a0d0e21e
LW
223
224=item * Regular expression enhancements
225
fc952dec 226You can now specify nongreedy quantifiers. You can now do grouping
a0d0e21e
LW
227without creating a backreference. You can now write regular expressions
228with embedded whitespace and comments for readability. A consistent
229extensibility mechanism has been added that is upwardly compatible with
230all old regular expressions.
231
5f05dabc 232=item * Innumerable Unbundled Modules
233
f102b883
TC
234The Comprehensive Perl Archive Network described in L<perlmodlib>
235contains hundreds of plug-and-play modules full of reusable code.
236See F<http://www.perl.com/CPAN> for a site near you.
5f05dabc 237
238=item * Compilability
239
240While not yet in full production mode, a working perl-to-C compiler
fc952dec 241does exist. It can generate portable byte code, simple C, or
5f05dabc 242optimized C code.
243
a0d0e21e
LW
244=back
245
68dc0745 246Okay, that's I<definitely> enough hype.
a0d0e21e 247
8e465e4e
JH
248=head1 AVAILABILITY
249
250Perl is available for the vast majority of operating system platforms,
251including most Unix-like platforms. The following situation is as of
252February 1999 and Perl 5.005_03.
253
254The following platforms are able to build Perl from the standard
255source code distribution available at
256F<http://www.perl.com/CPAN/src/index.html>
257
258 AIX IRIX SCO ODT/OSR
259 A/UX Linux Solaris
260 BeOS MachTen SunOS
261 BSD/OS MPE/iX SVR4
262 DG/UX NetBSD Ultrix
263 Digital UNIX NextSTEP UNICOS
264 DOS DJGPP 1) OpenBSD VMS
265 DYNIX/ptx OpenSTEP Windows 3.1 1)
266 FreeBSD OS/2 Windows 95 1) 3)
267 HP-UX OS390 2) Windows 98 1) 3)
268 Hurd PowerUX Windows NT 1) 3)
269 QNX VOS
270
271 1) in DOS mode either the DOS or OS/2 ports can be used
272 2) formerly known as MVS
273 3) compilers: Borland, Cygwin32, Mingw32 EGCS/GCC, VC++
274
275The following platforms have been known to build Perl from the source
276but for the Perl release 5.005_03 we haven't been able to verify them,
277either because the hardware/software platforms are rather rare or
278because we don't have an active champion on these platforms.
279
280 3b1 FPS Plan 9
281 AmigaOS GENIX RISC/os
282 ConvexOS Greenhills Stellar
283 CX/UX ISC SVR2
284 DC/OSx MachTen 68k TI1500
285 DDE SMES MiNT TitanOS
286 DomainOS MPC UNICOS/mk
287 DOS EMX NEWS-OS Unisys Dynix
288 Dynix Opus Unixware
289 EP/IX
290 ESIX
291
292The following platforms are planned to be supported in the standard
293source distribution of the Perl release 5.006 but are not
294supported in the Perl release 5.005_03:
295
296 BS2000
297 VM/ESA
298
299The following platforms have their own source code distributions and
300binaries available via F<http://www.perl.com/CPAN/ports/index.html>.
301
302 Perl release
303
304 AS/400 5.003
305 MacOS 5.004_04
306 Tandem Guardian 5.004
307
308The following platforms have only binaries available via
309F<http://www.perl.com/CPAN/ports/index.html>.
310
311 Perl release
312
313 Acorn RISCOS 5.001
314 AOS 5.002
315 LynxOS 5.004_02
316 Netware 5.003_07
317
a0d0e21e
LW
318=head1 ENVIRONMENT
319
1e422769 320See L<perlrun>.
a0d0e21e
LW
321
322=head1 AUTHOR
323
9607fc9c 324Larry Wall <F<larry@wall.org>>, with the help of oodles of other folks.
a0d0e21e 325
a99b1639
TP
326If your Perl success stories and testimonials may be of help to others
327who wish to advocate the use of Perl in their applications,
328or if you wish to simply express your gratitude to Larry and the
329Perl developers, please write to <F<perl-thanks@perl.org>>.
330
a0d0e21e
LW
331=head1 FILES
332
5f05dabc 333 "@INC" locations of perl libraries
a0d0e21e
LW
334
335=head1 SEE ALSO
336
337 a2p awk to perl translator
4633a7c4 338
a0d0e21e
LW
339 s2p sed to perl translator
340
341=head1 DIAGNOSTICS
342
343The B<-w> switch produces some lovely diagnostics.
344
5a964f20
TC
345See L<perldiag> for explanations of all Perl's diagnostics. The C<use
346diagnostics> pragma automatically turns Perl's normally terse warnings
347and errors into these longer forms.
a0d0e21e
LW
348
349Compilation errors will tell you the line number of the error, with an
350indication of the next token or token type that was to be examined.
351(In the case of a script passed to Perl via B<-e> switches, each
352B<-e> is counted as one line.)
353
354Setuid scripts have additional constraints that can produce error
355messages such as "Insecure dependency". See L<perlsec>.
356
357Did we mention that you should definitely consider using the B<-w>
358switch?
359
360=head1 BUGS
361
362The B<-w> switch is not mandatory.
363
364Perl is at the mercy of your machine's definitions of various
1b3f7d21
CS
365operations such as type casting, atof(), and floating-point
366output with sprintf().
a0d0e21e 367
748a9306 368If your stdio requires a seek or eof between reads and writes on a
a0d0e21e
LW
369particular stream, so does Perl. (This doesn't apply to sysread()
370and syswrite().)
371
372While none of the built-in data types have any arbitrary size limits
373(apart from memory size), there are still a few arbitrary limits: a
a30ac152
GS
374given variable name may not be longer than 251 characters. Line numbers
375displayed by diagnostics are internally stored as short integers,
376so they are limited to a maximum of 65535 (higher numbers usually being
377affected by wraparound).
a0d0e21e 378
b0607b7a
LV
379You may mail your bug reports (be sure to include full configuration
380information as output by the myconfig program in the perl source tree,
9607fc9c 381or by C<perl -V>) to <F<perlbug@perl.com>>.
c07a80fd 382If you've succeeded in compiling perl, the perlbug script in the utils/
383subdirectory can be used to help mail in a bug report.
4633a7c4 384
a0d0e21e
LW
385Perl actually stands for Pathologically Eclectic Rubbish Lister, but
386don't tell anyone I said that.
387
388=head1 NOTES
389
390The Perl motto is "There's more than one way to do it." Divining
391how many more is left as an exercise to the reader.
392
4633a7c4 393The three principal virtues of a programmer are Laziness,
a0d0e21e 394Impatience, and Hubris. See the Camel Book for why.
16d20bd9 395