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