This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: [PATCH] Encode.pm docs fix
[perl5.git] / pod / perl.pod
1 =head1 NAME
2
3 perl - Practical Extraction and Report Language
4
5 =head1 SYNOPSIS
6
7 B<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> ]...>
14
15 For ease of access, the Perl manual has been split up into several sections:
16
17     perl                Perl overview (this section)
18     perlfaq             Perl frequently asked questions
19     perltoc             Perl documentation table of contents
20     perlbook            Perl book information
21
22     perlsyn             Perl syntax
23     perldata            Perl data structures
24     perlop              Perl operators and precedence
25     perlsub             Perl subroutines
26     perlfunc            Perl builtin functions
27     perlreftut          Perl references short introduction
28     perldsc             Perl data structures intro
29     perlrequick         Perl regular expressions quick start
30     perlpod             Perl plain old documentation
31     perlstyle           Perl style guide
32     perltrap            Perl traps for the unwary
33
34     perlrun             Perl execution and options
35     perldiag            Perl diagnostic messages
36     perllexwarn         Perl warnings and their control
37     perldebtut          Perl debugging tutorial
38     perldebug           Perl debugging
39
40     perlvar             Perl predefined variables
41     perllol             Perl data structures: arrays of arrays
42     perlopentut         Perl open() tutorial
43     perlretut           Perl regular expressions tutorial
44
45     perlre              Perl regular expressions, the rest of the story
46     perlref             Perl references, the rest of the story
47
48     perlform            Perl formats
49
50     perlboot            Perl OO tutorial for beginners
51     perltoot            Perl OO tutorial, part 1
52     perltootc           Perl OO tutorial, part 2
53     perlobj             Perl objects
54     perlbot             Perl OO tricks and examples
55     perltie             Perl objects hidden behind simple variables
56
57     perlipc             Perl interprocess communication
58     perlfork            Perl fork() information
59     perlnumber          Perl number semantics
60
61     perlthrtut          Perl threads tutorial
62     perlothrtut         Perl old threads tutorial
63
64     perlport            Perl portability guide
65     perllocale          Perl locale support
66     perlunicode         Perl unicode support
67     perlebcdic          Considerations for running Perl on EBCDIC platforms
68
69     perlsec             Perl security
70
71     perlmod             Perl modules: how they work
72     perlmodlib          Perl modules: how to write and use
73     perlmodinstall      Perl modules: how to install from CPAN
74     perlnewmod          Perl modules: preparing a new module for distribution
75
76     perlfaq1            General Questions About Perl
77     perlfaq2            Obtaining and Learning about Perl
78     perlfaq3            Programming Tools
79     perlfaq4            Data Manipulation
80     perlfaq5            Files and Formats
81     perlfaq6            Regexes
82     perlfaq7            Perl Language Issues
83     perlfaq8            System Interaction
84     perlfaq9            Networking
85
86     perlcompile         Perl compiler suite intro
87
88     perlembed           Perl ways to embed perl in your C or C++ application
89     perldebguts         Perl debugging guts and tips
90     perlxstut           Perl XS tutorial
91     perlxs              Perl XS application programming interface
92     perlclib            Internal replacements for standard C library functions
93     perlguts            Perl internal functions for those doing extensions
94     perlcall            Perl calling conventions from C
95     perlutil            utilities packaged with the Perl distribution
96     perlfilter          Perl source filters
97     perldbmfilter       Perl DBM filters
98     perlapi             Perl API listing (autogenerated)
99     perlintern          Perl internal functions (autogenerated)
100     perliol             C API for Perl's implementation of IO in Layers
101     perlapio            Perl internal IO abstraction interface
102     perltodo            Perl things to do
103     perlhack            Perl hackers guide
104
105     perlhist            Perl history records
106     perldelta           Perl changes since previous version
107     perl572delta        Perl changes in version 5.7.2
108     perl571delta        Perl changes in version 5.7.1
109     perl570delta        Perl changes in version 5.7.0
110     perl56delta         Perl changes in version 5.6
111     perl5005delta       Perl changes in version 5.005
112     perl5004delta       Perl changes in version 5.004
113
114     perlaix             Perl notes for AIX
115     perlamiga           Perl notes for AmigaOS
116     perlapollo          Perl notes for Apollo DomainOS
117     perlbeos            Perl notes for BeOS
118     perlbs2000          Perl notes for POSIX-BC BS2000
119     perlce              Perl notes for WinCE
120     perlcygwin          Perl notes for Cygwin
121     perldgux            Perl notes for DG/UX
122     perldos             Perl notes for DOS
123     perlepoc            Perl notes for EPOC
124     perlhpux            Perl notes for HP-UX
125     perlhurd            Perl notes for Hurd
126     perlmachten         Perl notes for Power MachTen
127     perlmacos           Perl notes for Mac OS (Classic)
128     perlmint            Perl notes for MiNT
129     perlmpeix           Perl notes for MPE/iX
130     perlnetware         Perl notes for NetWare
131     perlos2             Perl notes for OS/2
132     perlos390           Perl notes for OS/390
133     perlplan9           Perl notes for Plan 9
134     perlqnx             Perl notes for QNX
135     perlsolaris         Perl notes for Solaris
136     perltru64           Perl notes for Tru64
137     perluts             Perl notes for UTS
138     perlvmesa           Perl notes for VM/ESA
139     perlvms             Perl notes for VMS
140     perlvos             Perl notes for Stratus VOS
141     perlwin32           Perl notes for Windows
142
143 (If you're intending to read these straight through for the first time,
144 the suggested order will tend to reduce the number of forward references.)
145
146 By default, the manpages listed above are installed in the 
147 F</usr/local/man/> directory.  
148
149 Extensive additional documentation for Perl modules is available.  The
150 default configuration for perl will place this additional documentation
151 in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
152 subdirectory of the Perl library directory).  Some of this additional
153 documentation is distributed standard with Perl, but you'll also find
154 documentation for third-party modules there.
155
156 You should be able to view Perl's documentation with your man(1)
157 program by including the proper directories in the appropriate start-up
158 files, or in the MANPATH environment variable.  To find out where the
159 configuration has installed the manpages, type:
160
161     perl -V:man.dir
162
163 If the directories have a common stem, such as F</usr/local/man/man1>
164 and F</usr/local/man/man3>, you need only to add that stem
165 (F</usr/local/man>) to your man(1) configuration files or your MANPATH
166 environment variable.  If they do not share a stem, you'll have to add
167 both stems.
168
169 If that doesn't work for some reason, you can still use the
170 supplied F<perldoc> script to view module information.  You might
171 also look into getting a replacement man program.
172
173 If something strange has gone wrong with your program and you're not
174 sure where you should look for help, try the B<-w> switch first.  It
175 will often point out exactly where the trouble is.
176
177 =head1 DESCRIPTION
178
179 Perl is a language optimized for scanning arbitrary
180 text files, extracting information from those text files, and printing
181 reports based on that information.  It's also a good language for many
182 system management tasks.  The language is intended to be practical
183 (easy to use, efficient, complete) rather than beautiful (tiny,
184 elegant, minimal).
185
186 Perl combines (in the author's opinion, anyway) some of the best
187 features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
188 those languages should have little difficulty with it.  (Language
189 historians will also note some vestiges of B<csh>, Pascal, and even
190 BASIC-PLUS.)  Expression syntax corresponds closely to C
191 expression syntax.  Unlike most Unix utilities, Perl does not
192 arbitrarily limit the size of your data--if you've got the memory,
193 Perl can slurp in your whole file as a single string.  Recursion is of
194 unlimited depth.  And the tables used by hashes (sometimes called
195 "associative arrays") grow as necessary to prevent degraded
196 performance.  Perl can use sophisticated pattern matching techniques to
197 scan large amounts of data quickly.  Although optimized for
198 scanning text, Perl can also deal with binary data, and can make dbm
199 files look like hashes.  Setuid Perl scripts are safer than C programs
200 through a dataflow tracing mechanism that prevents many stupid
201 security holes.
202
203 If you have a problem that would ordinarily use B<sed> or B<awk> or
204 B<sh>, but it exceeds their capabilities or must run a little faster,
205 and you don't want to write the silly thing in C, then Perl may be for
206 you.  There are also translators to turn your B<sed> and B<awk>
207 scripts into Perl scripts.
208
209 But wait, there's more...
210
211 Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
212 rewrite that provides the following additional benefits:
213
214 =over 4
215
216 =item *
217
218 modularity and reusability using innumerable modules 
219
220 Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
221
222 =item *
223
224 embeddable and extensible 
225
226 Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
227 L<perlguts>, and L<xsubpp>.
228
229 =item *
230
231 roll-your-own magic variables (including multiple simultaneous DBM implementations)
232
233 Described in L<perltie> and L<AnyDBM_File>.
234
235 =item *
236
237 subroutines can now be overridden, autoloaded, and prototyped
238
239 Described in L<perlsub>.
240
241 =item *
242
243 arbitrarily nested data structures and anonymous functions
244
245 Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
246
247 =item *
248
249 object-oriented programming
250
251 Described in L<perlobj>, L<perltoot>, and L<perlbot>.
252
253 =item *
254
255 compilability into C code or Perl bytecode
256
257 Described in L<B> and L<B::Bytecode>.
258
259 =item *
260
261 support for light-weight processes (threads)
262
263 Described in L<perlthrtut> and L<Thread>.
264
265 =item *
266
267 support for internationalization, localization, and Unicode 
268
269 Described in L<perllocale> and L<utf8>.
270
271 =item *
272
273 lexical scoping
274
275 Described in L<perlsub>.
276
277 =item *
278
279 regular expression enhancements
280
281 Described in L<perlre>, with additional examples in L<perlop>.
282
283 =item *
284
285 enhanced debugger and interactive Perl environment,
286 with integrated editor support
287
288 Described in L<perldebug>.
289
290 =item *
291
292 POSIX 1003.1 compliant library
293
294 Described in L<POSIX>.
295
296 =back
297
298 Okay, that's I<definitely> enough hype.
299
300 =head1 AVAILABILITY
301
302 Perl is available for most operating systems, including virtually
303 all Unix-like platforms.  See L<perlport/"Supported Platforms">
304 for a listing.
305
306 =head1 ENVIRONMENT
307
308 See L<perlrun>.
309
310 =head1 AUTHOR
311
312 Larry Wall <larry@wall.org>, with the help of oodles of other folks.
313
314 If your Perl success stories and testimonials may be of help to others 
315 who wish to advocate the use of Perl in their applications, 
316 or if you wish to simply express your gratitude to Larry and the 
317 Perl developers, please write to perl-thanks@perl.org .
318
319 =head1 FILES
320
321  "@INC"                 locations of perl libraries
322
323 =head1 SEE ALSO
324
325  a2p    awk to perl translator
326  s2p    sed to perl translator
327
328  http://www.perl.com/       the Perl Home Page
329  http://www.perl.com/CPAN   the Comprehensive Perl Archive
330
331 =head1 DIAGNOSTICS
332
333 The C<use warnings> pragma (and the B<-w> switch) produces some 
334 lovely diagnostics.
335
336 See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
337 diagnostics> pragma automatically turns Perl's normally terse warnings
338 and errors into these longer forms.
339
340 Compilation errors will tell you the line number of the error, with an
341 indication of the next token or token type that was to be examined.
342 (In a script passed to Perl via B<-e> switches, each
343 B<-e> is counted as one line.)
344
345 Setuid scripts have additional constraints that can produce error
346 messages such as "Insecure dependency".  See L<perlsec>.
347
348 Did we mention that you should definitely consider using the B<-w>
349 switch?
350
351 =head1 BUGS
352
353 The B<-w> switch is not mandatory.
354
355 Perl is at the mercy of your machine's definitions of various
356 operations such as type casting, atof(), and floating-point
357 output with sprintf().
358
359 If your stdio requires a seek or eof between reads and writes on a
360 particular stream, so does Perl.  (This doesn't apply to sysread()
361 and syswrite().)
362
363 While none of the built-in data types have any arbitrary size limits
364 (apart from memory size), there are still a few arbitrary limits:  a
365 given variable name may not be longer than 251 characters.  Line numbers
366 displayed by diagnostics are internally stored as short integers,
367 so they are limited to a maximum of 65535 (higher numbers usually being
368 affected by wraparound).
369
370 You may mail your bug reports (be sure to include full configuration
371 information as output by the myconfig program in the perl source
372 tree, or by C<perl -V>) to perlbug@perl.org .  If you've succeeded
373 in compiling perl, the B<perlbug> script in the F<utils/> subdirectory
374 can be used to help mail in a bug report.
375
376 Perl actually stands for Pathologically Eclectic Rubbish Lister, but
377 don't tell anyone I said that.
378
379 =head1 NOTES
380
381 The Perl motto is "There's more than one way to do it."  Divining
382 how many more is left as an exercise to the reader.
383
384 The three principal virtues of a programmer are Laziness,
385 Impatience, and Hubris.  See the Camel Book for why.
386