xref: /openbsd-src/gnu/usr.bin/perl/pod/perl.pod (revision d13be5d47e4149db2549a9828e244d59dbc43f15)
1=head1 NAME
2
3perl - The Perl language interpreter
4
5=head1 SYNOPSIS
6
7B<perl>	S<[ B<-sTtuUWX> ]>
8	S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
9	S<[ B<-cw> ] [ B<-d>[B<t>][:I<debugger>] ] [ B<-D>[I<number/list>] ]>
10	S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal/hexadecimal>] ]>
11	S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ] [ B<-f> ]>
12	S<[ B<-C [I<number/list>] >]>
13	S<[ B<-S> ]>
14	S<[ B<-x>[I<dir>] ]>
15	S<[ B<-i>[I<extension>] ]>
16	S<[ [B<-e>|B<-E>] I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
17
18=head1 GETTING HELP
19
20The F<perldoc> program gives you access to all the documentation that comes
21with Perl.  You can get more documentation, tutorials and community support
22online at L<http://www.perl.org/>.
23
24If you're new to Perl, you should start by running C<perldoc perlintro>,
25which is a general intro for beginners and provides some background to help
26you navigate the rest of Perl's extensive documentation.  Run C<perldoc
27perldoc> to learn more things you can do with F<perldoc>.
28
29For ease of access, the Perl manual has been split up into several sections.
30
31=head2 Overview
32
33    perl		Perl overview (this section)
34    perlintro		Perl introduction for beginners
35    perltoc		Perl documentation table of contents
36
37=head2 Tutorials
38
39    perlreftut		Perl references short introduction
40    perldsc		Perl data structures intro
41    perllol		Perl data structures: arrays of arrays
42
43    perlrequick 	Perl regular expressions quick start
44    perlretut		Perl regular expressions tutorial
45
46    perlboot		Perl OO tutorial for beginners
47    perltoot		Perl OO tutorial, part 1
48    perltooc		Perl OO tutorial, part 2
49    perlbot		Perl OO tricks and examples
50
51    perlperf		Perl Performance and Optimization Techniques
52
53    perlstyle		Perl style guide
54
55    perlcheat		Perl cheat sheet
56    perltrap		Perl traps for the unwary
57    perldebtut		Perl debugging tutorial
58
59    perlfaq		Perl frequently asked questions
60      perlfaq1		General Questions About Perl
61      perlfaq2		Obtaining and Learning about Perl
62      perlfaq3		Programming Tools
63      perlfaq4		Data Manipulation
64      perlfaq5		Files and Formats
65      perlfaq6		Regexes
66      perlfaq7		Perl Language Issues
67      perlfaq8		System Interaction
68      perlfaq9		Networking
69
70=head2 Reference Manual
71
72    perlsyn		Perl syntax
73    perldata		Perl data structures
74    perlop		Perl operators and precedence
75    perlsub		Perl subroutines
76    perlfunc		Perl built-in functions
77      perlopentut	Perl open() tutorial
78      perlpacktut	Perl pack() and unpack() tutorial
79    perlpod		Perl plain old documentation
80    perlpodspec 	Perl plain old documentation format specification
81    perlrun		Perl execution and options
82    perldiag		Perl diagnostic messages
83    perllexwarn 	Perl warnings and their control
84    perldebug		Perl debugging
85    perlvar		Perl predefined variables
86    perlre		Perl regular expressions, the rest of the story
87    perlrebackslash	Perl regular expression backslash sequences
88    perlrecharclass	Perl regular expression character classes
89    perlreref		Perl regular expressions quick reference
90    perlref		Perl references, the rest of the story
91    perlform		Perl formats
92    perlobj		Perl objects
93    perltie		Perl objects hidden behind simple variables
94      perldbmfilter	Perl DBM filters
95
96    perlipc		Perl interprocess communication
97    perlfork		Perl fork() information
98    perlnumber		Perl number semantics
99
100    perlthrtut		Perl threads tutorial
101
102    perlport		Perl portability guide
103    perllocale		Perl locale support
104    perluniintro	Perl Unicode introduction
105    perlunicode 	Perl Unicode support
106    perlunifaq		Perl Unicode FAQ
107    perluniprops	Index of Unicode Version 5.2.0 properties in Perl
108    perlunitut		Perl Unicode tutorial
109    perlebcdic		Considerations for running Perl on EBCDIC platforms
110
111    perlsec		Perl security
112
113    perlmod		Perl modules: how they work
114    perlmodlib		Perl modules: how to write and use
115    perlmodstyle	Perl modules: how to write modules with style
116    perlmodinstall	Perl modules: how to install from CPAN
117    perlnewmod		Perl modules: preparing a new module for distribution
118    perlpragma		Perl modules: writing a user pragma
119
120    perlutil		utilities packaged with the Perl distribution
121
122    perlcompile 	Perl compiler suite intro
123
124    perlfilter		Perl source filters
125
126    perlglossary	Perl Glossary
127
128=head2 Internals and C Language Interface
129
130    perlembed		Perl ways to embed perl in your C or C++ application
131    perldebguts 	Perl debugging guts and tips
132    perlxstut		Perl XS tutorial
133    perlxs		Perl XS application programming interface
134    perlclib		Internal replacements for standard C library functions
135    perlguts		Perl internal functions for those doing extensions
136    perlcall		Perl calling conventions from C
137    perlmroapi		Perl method resolution plugin interface
138    perlreapi		Perl regular expression plugin interface
139    perlreguts		Perl regular expression engine internals
140
141    perlapi		Perl API listing (autogenerated)
142    perlintern		Perl internal functions (autogenerated)
143    perliol		C API for Perl's implementation of IO in Layers
144    perlapio		Perl internal IO abstraction interface
145
146    perlhack		Perl hackers guide
147    perlpolicy		Perl development policies
148    perlrepository	Perl source repository
149
150=head2 Miscellaneous
151
152    perlbook		Perl book information
153    perlcommunity	Perl community information
154    perltodo		Perl things to do
155
156    perldoc		Look up Perl documentation in Pod format
157
158    perlhist		Perl history records
159    perldelta		Perl changes since previous version
160    perl5121delta	Perl changes in version 5.12.1
161    perl5120delta	Perl changes in version 5.12.0
162    perl5115delta	Perl changes in version 5.11.5
163    perl5114delta	Perl changes in version 5.11.4
164    perl5113delta	Perl changes in version 5.11.3
165    perl5112delta	Perl changes in version 5.11.2
166    perl5111delta	Perl changes in version 5.11.1
167    perl5110delta	Perl changes in version 5.11.0
168    perl5101delta	Perl changes in version 5.10.1
169    perl5100delta	Perl changes in version 5.10.0
170    perl595delta	Perl changes in version 5.9.5
171    perl594delta	Perl changes in version 5.9.4
172    perl593delta	Perl changes in version 5.9.3
173    perl592delta	Perl changes in version 5.9.2
174    perl591delta	Perl changes in version 5.9.1
175    perl590delta	Perl changes in version 5.9.0
176    perl589delta	Perl changes in version 5.8.9
177    perl588delta	Perl changes in version 5.8.8
178    perl587delta	Perl changes in version 5.8.7
179    perl586delta	Perl changes in version 5.8.6
180    perl585delta	Perl changes in version 5.8.5
181    perl584delta	Perl changes in version 5.8.4
182    perl583delta	Perl changes in version 5.8.3
183    perl582delta	Perl changes in version 5.8.2
184    perl581delta	Perl changes in version 5.8.1
185    perl58delta 	Perl changes in version 5.8.0
186    perl573delta	Perl changes in version 5.7.3
187    perl572delta	Perl changes in version 5.7.2
188    perl571delta	Perl changes in version 5.7.1
189    perl570delta	Perl changes in version 5.7.0
190    perl561delta	Perl changes in version 5.6.1
191    perl56delta 	Perl changes in version 5.6
192    perl5005delta	Perl changes in version 5.005
193    perl5004delta	Perl changes in version 5.004
194
195    perlartistic	Perl Artistic License
196    perlgpl		GNU General Public License
197
198=head2 Language-Specific
199
200    perlcn		Perl for Simplified Chinese (in EUC-CN)
201    perljp		Perl for Japanese (in EUC-JP)
202    perlko		Perl for Korean (in EUC-KR)
203    perltw		Perl for Traditional Chinese (in Big5)
204
205=head2 Platform-Specific
206
207    perlaix		Perl notes for AIX
208    perlamiga		Perl notes for AmigaOS
209    perlapollo		Perl notes for Apollo DomainOS
210    perlbeos		Perl notes for BeOS
211    perlbs2000		Perl notes for POSIX-BC BS2000
212    perlce		Perl notes for WinCE
213    perlcygwin		Perl notes for Cygwin
214    perldgux		Perl notes for DG/UX
215    perldos		Perl notes for DOS
216    perlepoc		Perl notes for EPOC
217    perlfreebsd 	Perl notes for FreeBSD
218    perlhaiku		Perl notes for Haiku
219    perlhpux		Perl notes for HP-UX
220    perlhurd		Perl notes for Hurd
221    perlirix		Perl notes for Irix
222    perllinux		Perl notes for Linux
223    perlmacos		Perl notes for Mac OS (Classic)
224    perlmacosx		Perl notes for Mac OS X
225    perlmpeix		Perl notes for MPE/iX
226    perlnetware 	Perl notes for NetWare
227    perlopenbsd 	Perl notes for OpenBSD
228    perlos2		Perl notes for OS/2
229    perlos390		Perl notes for OS/390
230    perlos400		Perl notes for OS/400
231    perlplan9		Perl notes for Plan 9
232    perlqnx		Perl notes for QNX
233    perlriscos		Perl notes for RISC OS
234    perlsolaris 	Perl notes for Solaris
235    perlsymbian 	Perl notes for Symbian
236    perltru64		Perl notes for Tru64
237    perluts		Perl notes for UTS
238    perlvmesa		Perl notes for VM/ESA
239    perlvms		Perl notes for VMS
240    perlvos		Perl notes for Stratus VOS
241    perlwin32		Perl notes for Windows
242
243
244On a Unix-like system, these documentation files will usually also be
245available as manpages for use with the F<man> program.
246
247In general, if something strange has gone wrong with your program and you're
248not sure where you should look for help, try the B<-w> switch first.  It will
249often point out exactly where the trouble is.
250
251=head1 DESCRIPTION
252
253Perl officially stands for Practical Extraction and Report Language,
254except when it doesn't.
255
256Perl is a language optimized for scanning arbitrary
257text files, extracting information from those text files, and printing
258reports based on that information.  It's also a good language for many
259system management tasks.  The language is intended to be practical
260(easy to use, efficient, complete) rather than beautiful (tiny,
261elegant, minimal).
262
263Perl combines (in the author's opinion, anyway) some of the best
264features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
265those languages should have little difficulty with it.  (Language
266historians will also note some vestiges of B<csh>, Pascal, and even
267BASIC-PLUS.)  Expression syntax corresponds closely to C
268expression syntax.  Unlike most Unix utilities, Perl does not
269arbitrarily limit the size of your data--if you've got the memory,
270Perl can slurp in your whole file as a single string.  Recursion is of
271unlimited depth.  And the tables used by hashes (sometimes called
272"associative arrays") grow as necessary to prevent degraded
273performance.  Perl can use sophisticated pattern matching techniques to
274scan large amounts of data quickly.  Although optimized for
275scanning text, Perl can also deal with binary data, and can make dbm
276files look like hashes.  Setuid Perl scripts are safer than C programs
277through a dataflow tracing mechanism that prevents many stupid
278security holes.
279
280If you have a problem that would ordinarily use B<sed> or B<awk> or
281B<sh>, but it exceeds their capabilities or must run a little faster,
282and you don't want to write the silly thing in C, then Perl may be for
283you.  There are also translators to turn your B<sed> and B<awk>
284scripts into Perl scripts.
285
286But wait, there's more...
287
288Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
289rewrite that provides the following additional benefits:
290
291=over 4
292
293=item *
294
295modularity and reusability using innumerable modules
296
297Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
298
299=item *
300
301embeddable and extensible
302
303Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
304L<perlguts>, and L<xsubpp>.
305
306=item *
307
308roll-your-own magic variables (including multiple simultaneous DBM
309implementations)
310
311Described in L<perltie> and L<AnyDBM_File>.
312
313=item *
314
315subroutines can now be overridden, autoloaded, and prototyped
316
317Described in L<perlsub>.
318
319=item *
320
321arbitrarily nested data structures and anonymous functions
322
323Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
324
325=item *
326
327object-oriented programming
328
329Described in L<perlobj>, L<perlboot>, L<perltoot>, L<perltooc>,
330and L<perlbot>.
331
332=item *
333
334support for light-weight processes (threads)
335
336Described in L<perlthrtut> and L<threads>.
337
338=item *
339
340support for Unicode, internationalization, and localization
341
342Described in L<perluniintro>, L<perllocale> and L<Locale::Maketext>.
343
344=item *
345
346lexical scoping
347
348Described in L<perlsub>.
349
350=item *
351
352regular expression enhancements
353
354Described in L<perlre>, with additional examples in L<perlop>.
355
356=item *
357
358enhanced debugger and interactive Perl environment,
359with integrated editor support
360
361Described in L<perldebtut>, L<perldebug> and L<perldebguts>.
362
363=item *
364
365POSIX 1003.1 compliant library
366
367Described in L<POSIX>.
368
369=back
370
371Okay, that's I<definitely> enough hype.
372
373=head1 AVAILABILITY
374
375Perl is available for most operating systems, including virtually
376all Unix-like platforms.  See L<perlport/"Supported Platforms">
377for a listing.
378
379=head1 ENVIRONMENT
380
381See L<perlrun>.
382
383=head1 AUTHOR
384
385Larry Wall <larry@wall.org>, with the help of oodles of other folks.
386
387If your Perl success stories and testimonials may be of help to others
388who wish to advocate the use of Perl in their applications,
389or if you wish to simply express your gratitude to Larry and the
390Perl developers, please write to perl-thanks@perl.org .
391
392=head1 FILES
393
394 "@INC"			locations of perl libraries
395
396=head1 SEE ALSO
397
398 a2p	awk to perl translator
399 s2p	sed to perl translator
400
401 http://www.perl.org/       the Perl homepage
402 http://www.perl.com/       Perl articles (O'Reilly)
403 http://www.cpan.org/       the Comprehensive Perl Archive
404 http://www.pm.org/         the Perl Mongers
405
406=head1 DIAGNOSTICS
407
408The C<use warnings> pragma (and the B<-w> switch) produces some
409lovely diagnostics.
410
411See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
412diagnostics> pragma automatically turns Perl's normally terse warnings
413and errors into these longer forms.
414
415Compilation errors will tell you the line number of the error, with an
416indication of the next token or token type that was to be examined.
417(In a script passed to Perl via B<-e> switches, each
418B<-e> is counted as one line.)
419
420Setuid scripts have additional constraints that can produce error
421messages such as "Insecure dependency".  See L<perlsec>.
422
423Did we mention that you should definitely consider using the B<-w>
424switch?
425
426=head1 BUGS
427
428The B<-w> switch is not mandatory.
429
430Perl is at the mercy of your machine's definitions of various
431operations such as type casting, atof(), and floating-point
432output with sprintf().
433
434If your stdio requires a seek or eof between reads and writes on a
435particular stream, so does Perl.  (This doesn't apply to sysread()
436and syswrite().)
437
438While none of the built-in data types have any arbitrary size limits
439(apart from memory size), there are still a few arbitrary limits:  a
440given variable name may not be longer than 251 characters.  Line numbers
441displayed by diagnostics are internally stored as short integers,
442so they are limited to a maximum of 65535 (higher numbers usually being
443affected by wraparound).
444
445You may mail your bug reports (be sure to include full configuration
446information as output by the myconfig program in the perl source
447tree, or by C<perl -V>) to perlbug@perl.org .  If you've succeeded
448in compiling perl, the B<perlbug> script in the F<utils/> subdirectory
449can be used to help mail in a bug report.
450
451Perl actually stands for Pathologically Eclectic Rubbish Lister, but
452don't tell anyone I said that.
453
454=head1 NOTES
455
456The Perl motto is "There's more than one way to do it."  Divining
457how many more is left as an exercise to the reader.
458
459The three principal virtues of a programmer are Laziness,
460Impatience, and Hubris.  See the Camel Book for why.
461
462