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