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