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