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