xref: /openbsd-src/gnu/usr.bin/perl/pod/perl.pod (revision 103c904c67a68b2343cdd6db8982cb0471943127)
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: declarations, statements, comments
91    perldata            Perl data structures
92    perlop              Perl expressions: operators, precedence, string literals
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      perldbmfilter     Perl DBM filters
115    perlclass           Perl class syntax
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            Interacting with 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    perl5400delta       Perl changes in version 5.40.0
185    perl5382delta       Perl changes in version 5.38.2
186    perl5381delta       Perl changes in version 5.38.1
187    perl5380delta       Perl changes in version 5.38.0
188    perl5363delta       Perl changes in version 5.36.3
189    perl5362delta       Perl changes in version 5.36.2
190    perl5361delta       Perl changes in version 5.36.1
191    perl5360delta       Perl changes in version 5.36.0
192    perl5343delta       Perl changes in version 5.34.3
193    perl5342delta       Perl changes in version 5.34.2
194    perl5341delta       Perl changes in version 5.34.1
195    perl5340delta       Perl changes in version 5.34.0
196    perl5321delta       Perl changes in version 5.32.1
197    perl5320delta       Perl changes in version 5.32.0
198    perl5303delta       Perl changes in version 5.30.3
199    perl5302delta       Perl changes in version 5.30.2
200    perl5301delta       Perl changes in version 5.30.1
201    perl5300delta       Perl changes in version 5.30.0
202    perl5283delta       Perl changes in version 5.28.3
203    perl5282delta       Perl changes in version 5.28.2
204    perl5281delta       Perl changes in version 5.28.1
205    perl5280delta       Perl changes in version 5.28.0
206    perl5263delta       Perl changes in version 5.26.3
207    perl5262delta       Perl changes in version 5.26.2
208    perl5261delta       Perl changes in version 5.26.1
209    perl5260delta       Perl changes in version 5.26.0
210    perl5244delta       Perl changes in version 5.24.4
211    perl5243delta       Perl changes in version 5.24.3
212    perl5242delta       Perl changes in version 5.24.2
213    perl5241delta       Perl changes in version 5.24.1
214    perl5240delta       Perl changes in version 5.24.0
215    perl5224delta       Perl changes in version 5.22.4
216    perl5223delta       Perl changes in version 5.22.3
217    perl5222delta       Perl changes in version 5.22.2
218    perl5221delta       Perl changes in version 5.22.1
219    perl5220delta       Perl changes in version 5.22.0
220    perl5203delta       Perl changes in version 5.20.3
221    perl5202delta       Perl changes in version 5.20.2
222    perl5201delta       Perl changes in version 5.20.1
223    perl5200delta       Perl changes in version 5.20.0
224    perl5184delta       Perl changes in version 5.18.4
225    perl5182delta       Perl changes in version 5.18.2
226    perl5181delta       Perl changes in version 5.18.1
227    perl5180delta       Perl changes in version 5.18.0
228    perl5163delta       Perl changes in version 5.16.3
229    perl5162delta       Perl changes in version 5.16.2
230    perl5161delta       Perl changes in version 5.16.1
231    perl5160delta       Perl changes in version 5.16.0
232    perl5144delta       Perl changes in version 5.14.4
233    perl5143delta       Perl changes in version 5.14.3
234    perl5142delta       Perl changes in version 5.14.2
235    perl5141delta       Perl changes in version 5.14.1
236    perl5140delta       Perl changes in version 5.14.0
237    perl5125delta       Perl changes in version 5.12.5
238    perl5124delta       Perl changes in version 5.12.4
239    perl5123delta       Perl changes in version 5.12.3
240    perl5122delta       Perl changes in version 5.12.2
241    perl5121delta       Perl changes in version 5.12.1
242    perl5120delta       Perl changes in version 5.12.0
243    perl5101delta       Perl changes in version 5.10.1
244    perl5100delta       Perl changes in version 5.10.0
245    perl589delta        Perl changes in version 5.8.9
246    perl588delta        Perl changes in version 5.8.8
247    perl587delta        Perl changes in version 5.8.7
248    perl586delta        Perl changes in version 5.8.6
249    perl585delta        Perl changes in version 5.8.5
250    perl584delta        Perl changes in version 5.8.4
251    perl583delta        Perl changes in version 5.8.3
252    perl582delta        Perl changes in version 5.8.2
253    perl581delta        Perl changes in version 5.8.1
254    perl58delta         Perl changes in version 5.8.0
255    perl561delta        Perl changes in version 5.6.1
256    perl56delta         Perl changes in version 5.6
257    perl5005delta       Perl changes in version 5.005
258    perl5004delta       Perl changes in version 5.004
259
260=head2 Miscellaneous
261
262    perlbook            Perl book information
263    perlcommunity       Perl community information
264
265    perldoc             Look up Perl documentation in Pod format
266
267    perlexperiment      A listing of experimental features in Perl
268
269    perlartistic        Perl Artistic License
270    perlgpl             GNU General Public License
271
272=head2 Language-Specific
273
274=for buildtoc flag +r
275
276    perlcn              Perl for Simplified Chinese (in UTF-8)
277    perljp              Perl for Japanese (in EUC-JP)
278    perlko              Perl for Korean (in EUC-KR)
279    perltw              Perl for Traditional Chinese (in Big5)
280
281=head2 Platform-Specific
282
283    perlaix             Perl notes for AIX
284    perlamiga           Perl notes for AmigaOS
285    perlandroid         Perl notes for Android
286    perlbs2000          Perl notes for POSIX-BC BS2000
287    perlcygwin          Perl notes for Cygwin
288    perlfreebsd         Perl notes for FreeBSD
289    perlhaiku           Perl notes for Haiku
290    perlhpux            Perl notes for HP-UX
291    perlhurd            Perl notes for Hurd
292    perlirix            Perl notes for Irix
293    perllinux           Perl notes for Linux
294    perlmacosx          Perl notes for Mac OS X
295    perlopenbsd         Perl notes for OpenBSD
296    perlos2             Perl notes for OS/2
297    perlos390           Perl notes for OS/390
298    perlos400           Perl notes for OS/400
299    perlplan9           Perl notes for Plan 9
300    perlqnx             Perl notes for QNX
301    perlriscos          Perl notes for RISC OS
302    perlsolaris         Perl notes for Solaris
303    perlsynology        Perl notes for Synology
304    perltru64           Perl notes for Tru64
305    perlvms             Perl notes for VMS
306    perlvos             Perl notes for Stratus VOS
307    perlwin32           Perl notes for Windows
308
309=for buildtoc flag -r
310
311=head2 Stubs for Deleted Documents
312
313    perlboot
314    perlbot
315    perlrepository
316    perltodo
317    perltooc
318    perltoot
319
320=for buildtoc __END__
321
322On a Unix-like system, these documentation files will usually also be
323available as manpages for use with the F<man> program.
324
325Some documentation is not available as man pages, so if a
326cross-reference is not found by man, try it with L<perldoc>.  Perldoc can
327also take you directly to documentation for functions (with the B<-f>
328switch). See S<C<perldoc --help>> (or S<C<perldoc perldoc>> or
329S<C<man perldoc>>) for other helpful options L<perldoc> has to offer.
330
331In general, if something strange has gone wrong with your program and you're
332not sure where you should look for help, try making your code comply with
333B<use strict> and B<use warnings>.  These will often point out exactly
334where the trouble is.
335
336=head1 DESCRIPTION
337
338Perl officially stands for Practical Extraction and Report Language,
339except when it doesn't.
340
341Perl was originally a language optimized for scanning arbitrary
342text files, extracting information from those text files, and printing
343reports based on that information.  It quickly became a good language
344for many system management tasks. Over the years, Perl has grown into
345a general-purpose programming language. It's widely used for everything
346from quick "one-liners" to full-scale application development.
347
348The language is intended to be practical (easy to use, efficient,
349complete) rather than beautiful (tiny, elegant, minimal).  It combines
350(in the author's opinion, anyway) some of the best features of B<sed>,
351B<awk>, and B<sh>, making it familiar and easy to use for Unix users to
352whip up quick solutions to annoying problems.  Its general-purpose
353programming facilities support procedural, functional, and
354object-oriented programming paradigms, making Perl a comfortable
355language for the long haul on major projects, whatever your bent.
356
357Perl's roots in text processing haven't been forgotten over the years.
358It still boasts some of the most powerful regular expressions to be
359found anywhere, and its support for Unicode text is world-class.  It
360handles all kinds of structured text, too, through an extensive
361collection of extensions.  Those libraries, collected in the CPAN,
362provide ready-made solutions to an astounding array of problems.  When
363they haven't set the standard themselves, they steal from the best
364-- just like Perl itself.
365
366=head1 AVAILABILITY
367
368Perl is available for most operating systems, including virtually
369all Unix-like platforms.  See L<perlport/"Supported Platforms">
370for a listing.
371
372=head1 ENVIRONMENT
373
374See L<perlrun/ENVIRONMENT>.
375
376=head1 AUTHOR
377
378Larry Wall <larry@wall.org>, with the help of oodles of other folks.
379
380If your Perl success stories and testimonials may be of help to others
381who wish to advocate the use of Perl in their applications,
382or if you wish to simply express your gratitude to Larry and the
383Perl developers, please write to perl-thanks@perl.org .
384
385=head1 FILES
386
387 "@INC"                 locations of perl libraries
388
389"@INC" above is a reference to the built-in variable of the same name;
390see L<perlvar> for more information.
391
392=head1 SEE ALSO
393
394=over
395
396=item L<https://www.perl.org/>
397
398the Perl homepage
399
400=item L<https://www.perl.com/>
401
402Perl articles
403
404=item L<https://www.cpan.org/>
405
406the Comprehensive Perl Archive
407
408=item L<https://www.pm.org/>
409
410the Perl Mongers
411
412=back
413
414=head1 DIAGNOSTICS
415
416Using the C<use strict> pragma ensures that all variables are properly
417declared and prevents other misuses of legacy Perl features.
418These are enabled by default within the scope of
419C<L<use v5.12|perlfunc/use VERSION>> (or higher).
420
421The C<use warnings> pragma produces some lovely diagnostics.
422It is enabled by default when you say C<use v5.35> (or higher).
423One can also use the B<-w> flag, but its use is normally discouraged,
424because it gets applied to all executed Perl code, including that not under
425your control.
426
427See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
428diagnostics> pragma automatically turns Perl's normally terse warnings
429and errors into these longer forms.
430
431Compilation errors will tell you the line number of the error, with an
432indication of the next token or token type that was to be examined.
433(In a script passed to Perl via B<-e> switches, each
434B<-e> is counted as one line.)
435
436Setuid scripts have additional constraints that can produce error
437messages such as "Insecure dependency".  See L<perlsec>.
438
439Did we mention that you should definitely consider using the B<use warnings>
440pragma?
441
442=head1 BUGS
443
444The behavior implied by the B<use warnings> pragma is not mandatory.
445
446Perl is at the mercy of your machine's definitions of various
447operations such as type casting, atof(), and floating-point
448output with sprintf().
449
450If your stdio requires a seek or eof between reads and writes on a
451particular stream, so does Perl.  (This doesn't apply to sysread()
452and syswrite().)
453
454While none of the built-in data types have any arbitrary size limits
455(apart from memory size), there are still a few arbitrary limits:  a
456given variable name may not be longer than 251 characters.  Line numbers
457displayed by diagnostics are internally stored as short integers,
458so they are limited to a maximum of 65535 (higher numbers usually being
459affected by wraparound).
460
461You may submit your bug reports (be sure to include full configuration
462information as output by the myconfig program in the perl source
463tree, or by C<perl -V>) to L<https://github.com/Perl/perl5/issues>.
464
465Perl actually stands for Pathologically Eclectic Rubbish Lister, but
466don't tell anyone I said that.
467
468=head1 NOTES
469
470The Perl motto is "There's more than one way to do it."  Divining
471how many more is left as an exercise to the reader.
472
473The three principal virtues of a programmer are Laziness,
474Impatience, and Hubris.  See the Camel Book for why.
475
476