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