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