avoid negative return value from Win32::GetTickCount()
[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
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 18For ease of access, the Perl manual has been split up into a number
19of sections:
20
fb9cefb4 21 perl Perl overview (this section)
22 perldelta Perl changes since previous version
9bc80687 23 perl5005delta Perl changes in version 5.005
24 perl5004delta Perl changes in version 5.004
fb9cefb4 25 perlfaq Perl frequently asked questions
26 perltoc Perl documentation table of contents
760ac839 27
fb9cefb4 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 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 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 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 61 perlpod Perl plain old documentation
62 perlbook Perl book information
760ac839 63
fb9cefb4 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 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 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 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 99
100If that doesn't work for some reason, you can still use the
4633a7c4 101supplied F<perldoc> script to view module information. You might
102also look into getting a replacement man program.
16d20bd9 103
a0d0e21e 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 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 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 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 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 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 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 223
224=item * Regular expression enhancements
225
fc952dec 226You can now specify nongreedy quantifiers. You can now do grouping
a0d0e21e 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 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 244=back
245
68dc0745 246Okay, that's I<definitely> enough hype.
a0d0e21e 247
8e465e4e 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
58493fc4 258 AIX Linux SCO ODT/OSR
259 A/UX MachTen Solaris
260 BeOS MPE/iX SunOS
261 BSD/OS NetBSD SVR4
262 DG/UX NextSTEP Tru64 UNIX 3)
263 DomainOS OpenBSD Ultrix
264 DOS DJGPP 1) OpenSTEP UNICOS
265 DYNIX/ptx OS/2 VMS
266 FreeBSD OS390 2) VOS
267 HP-UX PowerMAX Windows 3.1 1)
268 Hurd QNX Windows 95 1) 4)
269 IRIX Windows 98 1) 4)
270 Windows NT 1) 4)
8e465e4e 271
272 1) in DOS mode either the DOS or OS/2 ports can be used
58493fc4 273 2) formerly known as MVS
274 3) formerly known as Digital UNIX and before that DEC OSF/1
275 4) compilers: Borland, Cygwin32, Mingw32 EGCS/GCC, VC++
276
8e465e4e 277The following platforms have been known to build Perl from the source
278but for the Perl release 5.005_03 we haven't been able to verify them,
279either because the hardware/software platforms are rather rare or
2e04d155 280because we don't have an active champion on these platforms, or both.
8e465e4e 281
282 3b1 FPS Plan 9
04251ce8 283 AmigaOS GENIX PowerUX
284 ConvexOS Greenhills RISC/os
285 CX/UX ISC Stellar
286 DC/OSx MachTen 68k SVR2
287 DDE SMES MiNT TI1500
82cda36e 288 DOS EMX MPC TitanOS
289 Dynix NEWS-OS UNICOS/mk
290 EP/IX Opus Unisys Dynix
291 ESIX Unixware
8e465e4e 292
293The following platforms are planned to be supported in the standard
2e04d155 294source code distribution of the Perl release 5.006 but are not
8e465e4e 295supported in the Perl release 5.005_03:
296
297 BS2000
00ad96e1 298 Netware
299 Rhapsody
8e465e4e 300 VM/ESA
301
302The following platforms have their own source code distributions and
303binaries available via F<http://www.perl.com/CPAN/ports/index.html>.
304
305 Perl release
306
307 AS/400 5.003
2e04d155 308 MacOS 5.004
04251ce8 309 Netware 5.003_07
8e465e4e 310 Tandem Guardian 5.004
311
312The following platforms have only binaries available via
313F<http://www.perl.com/CPAN/ports/index.html>.
314
315 Perl release
316
d845c4a6 317 Acorn RISCOS 5.005_02
8e465e4e 318 AOS 5.002
319 LynxOS 5.004_02
8e465e4e 320
a0d0e21e 321=head1 ENVIRONMENT
322
1e422769 323See L<perlrun>.
a0d0e21e 324
325=head1 AUTHOR
326
9607fc9c 327Larry Wall <F<larry@wall.org>>, with the help of oodles of other folks.
a0d0e21e 328
a99b1639 329If your Perl success stories and testimonials may be of help to others
330who wish to advocate the use of Perl in their applications,
331or if you wish to simply express your gratitude to Larry and the
332Perl developers, please write to <F<perl-thanks@perl.org>>.
333
a0d0e21e 334=head1 FILES
335
5f05dabc 336 "@INC" locations of perl libraries
a0d0e21e 337
338=head1 SEE ALSO
339
340 a2p awk to perl translator
4633a7c4 341
a0d0e21e 342 s2p sed to perl translator
343
344=head1 DIAGNOSTICS
345
346The B<-w> switch produces some lovely diagnostics.
347
5a964f20 348See L<perldiag> for explanations of all Perl's diagnostics. The C<use
349diagnostics> pragma automatically turns Perl's normally terse warnings
350and errors into these longer forms.
a0d0e21e 351
352Compilation errors will tell you the line number of the error, with an
353indication of the next token or token type that was to be examined.
354(In the case of a script passed to Perl via B<-e> switches, each
355B<-e> is counted as one line.)
356
357Setuid scripts have additional constraints that can produce error
358messages such as "Insecure dependency". See L<perlsec>.
359
360Did we mention that you should definitely consider using the B<-w>
361switch?
362
363=head1 BUGS
364
365The B<-w> switch is not mandatory.
366
367Perl is at the mercy of your machine's definitions of various
1b3f7d21 368operations such as type casting, atof(), and floating-point
369output with sprintf().
a0d0e21e 370
748a9306 371If your stdio requires a seek or eof between reads and writes on a
a0d0e21e 372particular stream, so does Perl. (This doesn't apply to sysread()
373and syswrite().)
374
375While none of the built-in data types have any arbitrary size limits
376(apart from memory size), there are still a few arbitrary limits: a
a30ac152 377given variable name may not be longer than 251 characters. Line numbers
378displayed by diagnostics are internally stored as short integers,
379so they are limited to a maximum of 65535 (higher numbers usually being
380affected by wraparound).
a0d0e21e 381
b0607b7a 382You may mail your bug reports (be sure to include full configuration
383information as output by the myconfig program in the perl source tree,
9607fc9c 384or by C<perl -V>) to <F<perlbug@perl.com>>.
c07a80fd 385If you've succeeded in compiling perl, the perlbug script in the utils/
386subdirectory can be used to help mail in a bug report.
4633a7c4 387
a0d0e21e 388Perl actually stands for Pathologically Eclectic Rubbish Lister, but
389don't tell anyone I said that.
390
391=head1 NOTES
392
393The Perl motto is "There's more than one way to do it." Divining
394how many more is left as an exercise to the reader.
395
4633a7c4 396The three principal virtues of a programmer are Laziness,
a0d0e21e 397Impatience, and Hubris. See the Camel Book for why.
16d20bd9 398