xref: /openbsd/gnu/usr.bin/perl/pod/perl.pod (revision 9e6efb0a)
1=head1 NAME
2
3perl - The Perl 5 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
18For more information on these options, you can run C<perldoc perlrun>.
19
20=head1 GETTING HELP
21
22The F<perldoc> program gives you access to all the documentation that comes
23with Perl.  You can get more documentation, tutorials and community support
24online at L<https://www.perl.org/>.
25
26If you're new to Perl, you should start by running C<perldoc perlintro>,
27which is a general intro for beginners and provides some background to help
28you navigate the rest of Perl's extensive documentation.  Run C<perldoc
29perldoc> to learn more things you can do with F<perldoc>.
30
31For ease of access, the Perl manual has been split up into several sections.
32
33=begin buildtoc
34
35# This section is parsed by Porting/pod_lib.pl for use by pod/buildtoc etc
36
37flag =g  perlmodlib perlapi perlintern
38flag =go perltoc
39flag =ro perlcn perljp perlko perltw
40flag =   perlvms
41
42path perlfaq.*               cpan/perlfaq/lib/
43path perlglossary            cpan/perlfaq/lib/
44path perlxs(?:tut|typemap)?  dist/ExtUtils-ParseXS/lib/
45path perldoc                 cpan/Pod-Perldoc/
46
47aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
48
49=end buildtoc
50
51=head2 Overview
52
53    perl		Perl overview (this section)
54    perlintro		Perl introduction for beginners
55    perlrun		Perl execution and options
56    perltoc		Perl documentation table of contents
57
58=head2 Tutorials
59
60    perlreftut		Perl references short introduction
61    perldsc		Perl data structures intro
62    perllol		Perl data structures: arrays of arrays
63
64    perlrequick 	Perl regular expressions quick start
65    perlretut		Perl regular expressions tutorial
66
67    perlootut		Perl OO tutorial for beginners
68
69    perlperf		Perl Performance and Optimization Techniques
70
71    perlstyle		Perl style guide
72
73    perlcheat		Perl cheat sheet
74    perltrap		Perl traps for the unwary
75    perldebtut		Perl debugging tutorial
76
77    perlfaq		Perl frequently asked questions
78      perlfaq1		General Questions About Perl
79      perlfaq2		Obtaining and Learning about Perl
80      perlfaq3		Programming Tools
81      perlfaq4		Data Manipulation
82      perlfaq5		Files and Formats
83      perlfaq6		Regexes
84      perlfaq7		Perl Language Issues
85      perlfaq8		System Interaction
86      perlfaq9		Networking
87
88=head2 Reference Manual
89
90    perlsyn		Perl syntax
91    perldata		Perl data structures
92    perlop		Perl operators and precedence
93    perlsub		Perl subroutines
94    perlfunc		Perl built-in functions
95      perlopentut	Perl open() tutorial
96      perlpacktut	Perl pack() and unpack() tutorial
97    perlpod		Perl plain old documentation
98    perlpodspec 	Perl plain old documentation format specification
99    perldocstyle	Perl style guide for core docs
100    perlpodstyle	Perl POD style guide
101    perldiag		Perl diagnostic messages
102    perldeprecation     Perl deprecations
103    perllexwarn 	Perl warnings and their control
104    perldebug		Perl debugging
105    perlvar		Perl predefined variables
106    perlre		Perl regular expressions, the rest of the story
107    perlrebackslash	Perl regular expression backslash sequences
108    perlrecharclass	Perl regular expression character classes
109    perlreref		Perl regular expressions quick reference
110    perlref		Perl references, the rest of the story
111    perlform		Perl formats
112    perlobj		Perl objects
113    perltie		Perl objects hidden behind simple variables
114    perlclass           Perl class syntax
115      perldbmfilter	Perl DBM filters
116
117    perlipc		Perl interprocess communication
118    perlfork		Perl fork() information
119    perlnumber		Perl number semantics
120
121    perlthrtut		Perl threads tutorial
122
123    perlport		Perl portability guide
124    perllocale		Perl locale support
125    perluniintro	Perl Unicode introduction
126    perlunicode 	Perl Unicode support
127    perlunicook 	Perl Unicode cookbook
128    perlunifaq		Perl Unicode FAQ
129    perluniprops	Index of Unicode properties in Perl
130    perlunitut		Perl Unicode tutorial
131    perlebcdic		Considerations for running Perl on EBCDIC platforms
132
133    perlsec		Perl security
134    perlsecpolicy	Perl security report handling policy
135
136    perlmod		Perl modules: how they work
137    perlmodlib		Perl modules: how to write and use
138    perlmodstyle	Perl modules: how to write modules with style
139    perlmodinstall	Perl modules: how to install from CPAN
140    perlnewmod		Perl modules: preparing a new module for distribution
141    perlpragma		Perl modules: writing a user pragma
142
143    perlutil		utilities packaged with the Perl distribution
144
145    perlfilter		Perl source filters
146
147    perldtrace		Perl's support for DTrace
148
149    perlglossary	Perl Glossary
150
151=head2 Internals and C Language Interface
152
153    perlembed		Perl ways to embed perl in your C or C++ application
154    perldebguts 	Perl debugging guts and tips
155    perlxstut		Perl XS tutorial
156    perlxs		Perl XS application programming interface
157    perlxstypemap	Perl XS C/Perl type conversion tools
158    perlclib		Internal replacements for standard C library functions
159    perlguts		Perl internal functions for those doing extensions
160    perlcall		Perl calling conventions from C
161    perlmroapi		Perl method resolution plugin interface
162    perlreapi		Perl regular expression plugin interface
163    perlreguts		Perl regular expression engine internals
164    perlclassguts	Internals of class syntax
165
166    perlapi		Perl API listing (autogenerated)
167    perlintern		Perl internal functions (autogenerated)
168    perliol		C API for Perl's implementation of IO in Layers
169    perlapio		Perl internal IO abstraction interface
170
171    perlhack		Perl hackers guide
172    perlsource		Guide to the Perl source tree
173    perlinterp		Overview of the Perl interpreter source and how it works
174    perlhacktut 	Walk through the creation of a simple C code patch
175    perlhacktips	Tips for Perl core C code hacking
176    perlpolicy		Perl development policies
177    perlgov		Perl Rules of Governance
178    perlgit		Using git with the Perl repository
179
180=head2 History
181
182    perlhist		Perl history records
183    perldelta		Perl changes since previous version
184    perl5381delta	Perl changes in version 5.38.1
185    perl5380delta	Perl changes in version 5.38.0
186    perl5363delta	Perl changes in version 5.36.3
187    perl5362delta	Perl changes in version 5.36.2
188    perl5361delta	Perl changes in version 5.36.1
189    perl5360delta	Perl changes in version 5.36.0
190    perl5343delta	Perl changes in version 5.34.3
191    perl5342delta	Perl changes in version 5.34.2
192    perl5341delta	Perl changes in version 5.34.1
193    perl5340delta	Perl changes in version 5.34.0
194    perl5321delta	Perl changes in version 5.32.1
195    perl5320delta	Perl changes in version 5.32.0
196    perl5303delta	Perl changes in version 5.30.3
197    perl5302delta	Perl changes in version 5.30.2
198    perl5301delta	Perl changes in version 5.30.1
199    perl5300delta	Perl changes in version 5.30.0
200    perl5283delta	Perl changes in version 5.28.3
201    perl5282delta	Perl changes in version 5.28.2
202    perl5281delta	Perl changes in version 5.28.1
203    perl5280delta	Perl changes in version 5.28.0
204    perl5263delta	Perl changes in version 5.26.3
205    perl5262delta	Perl changes in version 5.26.2
206    perl5261delta	Perl changes in version 5.26.1
207    perl5260delta	Perl changes in version 5.26.0
208    perl5244delta	Perl changes in version 5.24.4
209    perl5243delta	Perl changes in version 5.24.3
210    perl5242delta	Perl changes in version 5.24.2
211    perl5241delta	Perl changes in version 5.24.1
212    perl5240delta	Perl changes in version 5.24.0
213    perl5224delta	Perl changes in version 5.22.4
214    perl5223delta	Perl changes in version 5.22.3
215    perl5222delta	Perl changes in version 5.22.2
216    perl5221delta	Perl changes in version 5.22.1
217    perl5220delta	Perl changes in version 5.22.0
218    perl5203delta	Perl changes in version 5.20.3
219    perl5202delta	Perl changes in version 5.20.2
220    perl5201delta	Perl changes in version 5.20.1
221    perl5200delta	Perl changes in version 5.20.0
222    perl5184delta	Perl changes in version 5.18.4
223    perl5182delta	Perl changes in version 5.18.2
224    perl5181delta	Perl changes in version 5.18.1
225    perl5180delta	Perl changes in version 5.18.0
226    perl5163delta	Perl changes in version 5.16.3
227    perl5162delta	Perl changes in version 5.16.2
228    perl5161delta	Perl changes in version 5.16.1
229    perl5160delta	Perl changes in version 5.16.0
230    perl5144delta	Perl changes in version 5.14.4
231    perl5143delta	Perl changes in version 5.14.3
232    perl5142delta	Perl changes in version 5.14.2
233    perl5141delta	Perl changes in version 5.14.1
234    perl5140delta	Perl changes in version 5.14.0
235    perl5125delta	Perl changes in version 5.12.5
236    perl5124delta	Perl changes in version 5.12.4
237    perl5123delta	Perl changes in version 5.12.3
238    perl5122delta	Perl changes in version 5.12.2
239    perl5121delta	Perl changes in version 5.12.1
240    perl5120delta	Perl changes in version 5.12.0
241    perl5101delta	Perl changes in version 5.10.1
242    perl5100delta	Perl changes in version 5.10.0
243    perl589delta	Perl changes in version 5.8.9
244    perl588delta	Perl changes in version 5.8.8
245    perl587delta	Perl changes in version 5.8.7
246    perl586delta	Perl changes in version 5.8.6
247    perl585delta	Perl changes in version 5.8.5
248    perl584delta	Perl changes in version 5.8.4
249    perl583delta	Perl changes in version 5.8.3
250    perl582delta	Perl changes in version 5.8.2
251    perl581delta	Perl changes in version 5.8.1
252    perl58delta 	Perl changes in version 5.8.0
253    perl561delta	Perl changes in version 5.6.1
254    perl56delta 	Perl changes in version 5.6
255    perl5005delta	Perl changes in version 5.005
256    perl5004delta	Perl changes in version 5.004
257
258=head2 Miscellaneous
259
260    perlbook		Perl book information
261    perlcommunity	Perl community information
262
263    perldoc		Look up Perl documentation in Pod format
264
265    perlexperiment	A listing of experimental features in Perl
266
267    perlartistic	Perl Artistic License
268    perlgpl		GNU General Public License
269
270=head2 Language-Specific
271
272=for buildtoc flag +r
273
274    perlcn		Perl for Simplified Chinese (in UTF-8)
275    perljp		Perl for Japanese (in EUC-JP)
276    perlko		Perl for Korean (in EUC-KR)
277    perltw		Perl for Traditional Chinese (in Big5)
278
279=head2 Platform-Specific
280
281    perlaix		Perl notes for AIX
282    perlamiga		Perl notes for AmigaOS
283    perlandroid		Perl notes for Android
284    perlbs2000		Perl notes for POSIX-BC BS2000
285    perlcygwin		Perl notes for Cygwin
286    perlfreebsd 	Perl notes for FreeBSD
287    perlhaiku		Perl notes for Haiku
288    perlhpux		Perl notes for HP-UX
289    perlhurd		Perl notes for Hurd
290    perlirix		Perl notes for Irix
291    perllinux		Perl notes for Linux
292    perlmacosx		Perl notes for Mac OS X
293    perlopenbsd 	Perl notes for OpenBSD
294    perlos2		Perl notes for OS/2
295    perlos390		Perl notes for OS/390
296    perlos400		Perl notes for OS/400
297    perlplan9		Perl notes for Plan 9
298    perlqnx		Perl notes for QNX
299    perlriscos		Perl notes for RISC OS
300    perlsolaris 	Perl notes for Solaris
301    perlsynology 	Perl notes for Synology
302    perltru64		Perl notes for Tru64
303    perlvms		Perl notes for VMS
304    perlvos		Perl notes for Stratus VOS
305    perlwin32		Perl notes for Windows
306
307=for buildtoc flag -r
308
309=head2 Stubs for Deleted Documents
310
311    perlboot
312    perlbot
313    perlrepository
314    perltodo
315    perltooc
316    perltoot
317
318=for buildtoc __END__
319
320On a Unix-like system, these documentation files will usually also be
321available as manpages for use with the F<man> program.
322
323Some documentation is not available as man pages, so if a
324cross-reference is not found by man, try it with L<perldoc>.  Perldoc can
325also take you directly to documentation for functions (with the B<-f>
326switch). See S<C<perldoc --help>> (or S<C<perldoc perldoc>> or
327S<C<man perldoc>>) for other helpful options L<perldoc> has to offer.
328
329In general, if something strange has gone wrong with your program and you're
330not sure where you should look for help, try making your code comply with
331B<use strict> and B<use warnings>.  These will often point out exactly
332where the trouble is.
333
334=head1 DESCRIPTION
335
336Perl officially stands for Practical Extraction and Report Language,
337except when it doesn't.
338
339Perl was originally a language optimized for scanning arbitrary
340text files, extracting information from those text files, and printing
341reports based on that information.  It quickly became a good language
342for many system management tasks. Over the years, Perl has grown into
343a general-purpose programming language. It's widely used for everything
344from quick "one-liners" to full-scale application development.
345
346The language is intended to be practical (easy to use, efficient,
347complete) rather than beautiful (tiny, elegant, minimal).  It combines
348(in the author's opinion, anyway) some of the best features of B<sed>,
349B<awk>, and B<sh>, making it familiar and easy to use for Unix users to
350whip up quick solutions to annoying problems.  Its general-purpose
351programming facilities support procedural, functional, and
352object-oriented programming paradigms, making Perl a comfortable
353language for the long haul on major projects, whatever your bent.
354
355Perl's roots in text processing haven't been forgotten over the years.
356It still boasts some of the most powerful regular expressions to be
357found anywhere, and its support for Unicode text is world-class.  It
358handles all kinds of structured text, too, through an extensive
359collection of extensions.  Those libraries, collected in the CPAN,
360provide ready-made solutions to an astounding array of problems.  When
361they haven't set the standard themselves, they steal from the best
362-- just like Perl itself.
363
364=head1 AVAILABILITY
365
366Perl is available for most operating systems, including virtually
367all Unix-like platforms.  See L<perlport/"Supported Platforms">
368for a listing.
369
370=head1 ENVIRONMENT
371
372See L<perlrun/ENVIRONMENT>.
373
374=head1 AUTHOR
375
376Larry Wall <larry@wall.org>, with the help of oodles of other folks.
377
378If your Perl success stories and testimonials may be of help to others
379who wish to advocate the use of Perl in their applications,
380or if you wish to simply express your gratitude to Larry and the
381Perl developers, please write to perl-thanks@perl.org .
382
383=head1 FILES
384
385 "@INC"			locations of perl libraries
386
387"@INC" above is a reference to the built-in variable of the same name;
388see L<perlvar> for more information.
389
390=head1 SEE ALSO
391
392 https://www.perl.org/       the Perl homepage
393 https://www.perl.com/       Perl articles
394 https://www.cpan.org/       the Comprehensive Perl Archive
395 https://www.pm.org/         the Perl Mongers
396
397=head1 DIAGNOSTICS
398
399Using the C<use strict> pragma ensures that all variables are properly
400declared and prevents other misuses of legacy Perl features.
401These are enabled by default within the scope of
402C<L<use v5.12|perlfunc/use VERSION>> (or higher).
403
404The C<use warnings> pragma produces some lovely diagnostics.
405It is enabled by default when you say C<use v5.35> (or higher).
406One can also use the B<-w> flag, but its use is normally discouraged,
407because it gets applied to all executed Perl code, including that not under
408your control.
409
410See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
411diagnostics> pragma automatically turns Perl's normally terse warnings
412and errors into these longer forms.
413
414Compilation errors will tell you the line number of the error, with an
415indication of the next token or token type that was to be examined.
416(In a script passed to Perl via B<-e> switches, each
417B<-e> is counted as one line.)
418
419Setuid scripts have additional constraints that can produce error
420messages such as "Insecure dependency".  See L<perlsec>.
421
422Did we mention that you should definitely consider using the B<use warnings>
423pragma?
424
425=head1 BUGS
426
427The behavior implied by the B<use warnings> pragma is not mandatory.
428
429Perl is at the mercy of your machine's definitions of various
430operations such as type casting, atof(), and floating-point
431output with sprintf().
432
433If your stdio requires a seek or eof between reads and writes on a
434particular stream, so does Perl.  (This doesn't apply to sysread()
435and syswrite().)
436
437While none of the built-in data types have any arbitrary size limits
438(apart from memory size), there are still a few arbitrary limits:  a
439given variable name may not be longer than 251 characters.  Line numbers
440displayed by diagnostics are internally stored as short integers,
441so they are limited to a maximum of 65535 (higher numbers usually being
442affected by wraparound).
443
444You may submit your bug reports (be sure to include full configuration
445information as output by the myconfig program in the perl source
446tree, or by C<perl -V>) to L<https://github.com/Perl/perl5/issues>.
447
448Perl actually stands for Pathologically Eclectic Rubbish Lister, but
449don't tell anyone I said that.
450
451=head1 NOTES
452
453The Perl motto is "There's more than one way to do it."  Divining
454how many more is left as an exercise to the reader.
455
456The three principal virtues of a programmer are Laziness,
457Impatience, and Hubris.  See the Camel Book for why.
458
459