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
1=head1 NAME
2
3perl - Practical Extraction and Report Language
4
5=head1 SYNOPSIS
6
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> ]...>
17
18For ease of access, the Perl manual has been split up into a number
19of sections:
20
21 perl Perl overview (this section)
22 perldelta Perl changes since previous version
23 perl5005delta Perl changes in version 5.005
24 perl5004delta Perl changes in version 5.004
25 perlfaq Perl frequently asked questions
26 perltoc Perl documentation table of contents
27
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 perlopentut Perl open() tutorial
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
42
43 perlref Perl references
44 perlreftut Perl references short introduction
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
52 perlthrtut Perl threads tutorial
53
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
60
61 perlpod Perl plain old documentation
62 perlbook Perl book information
63
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
70
71 perltodo Perl things to do
72 perlhist Perl history records
73
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
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:
91
92 perl -V:man.dir
93
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.
99
100If that doesn't work for some reason, you can still use the
101supplied F<perldoc> script to view module information. You might
102also look into getting a replacement man program.
103
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
110Perl is a language optimized for scanning arbitrary
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,
115elegant, minimal).
116
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
122expression syntax. Unlike most Unix utilities, Perl does not
123arbitrarily limit the size of your data--if you've got the memory,
124Perl can slurp in your whole file as a single string. Recursion is of
125unlimited depth. And the tables used by hashes (sometimes called
126"associative arrays") grow as necessary to prevent degraded
127performance. Perl can use sophisticated pattern matching techniques to
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.
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
168to better privacy for "programming in the large". Anonymous
169subroutines exhibit deep binding of lexical variables (closures).
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
191=item * Embeddable and Extensible
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
197supported, and Perl itself can be made into a dynamic library.
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
222semantics for undefined subroutine calls. It's not for just autoloading.
223
224=item * Regular expression enhancements
225
226You can now specify nongreedy quantifiers. You can now do grouping
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
232=item * Innumerable Unbundled Modules
233
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.
237
238=item * Compilability
239
240While not yet in full production mode, a working perl-to-C compiler
241does exist. It can generate portable byte code, simple C, or
242optimized C code.
243
244=back
245
246Okay, that's I<definitely> enough hype.
247
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
318=head1 ENVIRONMENT
319
320See L<perlrun>.
321
322=head1 AUTHOR
323
324Larry Wall <F<larry@wall.org>>, with the help of oodles of other folks.
325
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
331=head1 FILES
332
333 "@INC" locations of perl libraries
334
335=head1 SEE ALSO
336
337 a2p awk to perl translator
338
339 s2p sed to perl translator
340
341=head1 DIAGNOSTICS
342
343The B<-w> switch produces some lovely diagnostics.
344
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.
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
365operations such as type casting, atof(), and floating-point
366output with sprintf().
367
368If your stdio requires a seek or eof between reads and writes on a
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
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).
378
379You may mail your bug reports (be sure to include full configuration
380information as output by the myconfig program in the perl source tree,
381or by C<perl -V>) to <F<perlbug@perl.com>>.
382If you've succeeded in compiling perl, the perlbug script in the utils/
383subdirectory can be used to help mail in a bug report.
384
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
393The three principal virtues of a programmer are Laziness,
394Impatience, and Hubris. See the Camel Book for why.
395