This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Documenting the perl-thanks address
[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> ]>
8         S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
9         S<[ B<-cw> ] [ B<-d>[:I<debugger>] ] [ B<-D>[I<number/list>] ]>
10         S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal>] ]>
11         S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ]>
12         S<[ B<-P> ]>
13         S<[ B<-S> ]>
14         S<[ B<-x>[I<dir>] ]>
15         S<[ B<-i>[I<extension>] ]>
16         S<[ B<-e> I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
17
18 For ease of access, the Perl manual has been split up into a number
19 of sections:
20
21     perl        Perl overview (this section)
22     perldelta   Perl changes since previous version
23     perlfaq     Perl frequently asked questions
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     perlvar     Perl predefined variables
32     perlsub     Perl subroutines
33     perlmod     Perl modules: how they work
34     perlmodlib  Perl modules: how to write and use
35     perlform    Perl formats
36     perllocale  Perl locale support
37
38     perlref     Perl references
39     perldsc     Perl data structures intro
40     perllol     Perl data structures: lists of lists
41     perltoot    Perl OO tutorial
42     perlobj     Perl objects
43     perltie     Perl objects hidden behind simple variables
44     perlbot     Perl OO tricks and examples
45     perlipc     Perl interprocess communication
46
47     perldebug   Perl debugging
48     perldiag    Perl diagnostic messages
49     perlsec     Perl security
50     perltrap    Perl traps for the unwary
51     perlstyle   Perl style guide
52
53     perlpod     Perl plain old documentation
54     perlbook    Perl book information
55
56     perlembed   Perl ways to embed perl in your C or C++ application
57     perlapio    Perl internal IO abstraction interface
58     perlxs      Perl XS application programming interface
59     perlxstut   Perl XS tutorial
60     perlguts    Perl internal functions for those doing extensions
61     perlcall    Perl calling conventions from C
62
63 (If you're intending to read these straight through for the first time,
64 the suggested order will tend to reduce the number of forward references.)
65
66 By default, all of the above manpages are installed in the 
67 F</usr/local/man/> directory.  
68
69 Extensive additional documentation for Perl modules is available.  The
70 default configuration for perl will place this additional documentation
71 in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
72 subdirectory of the Perl library directory).  Some of this additional
73 documentation is distributed standard with Perl, but you'll also find
74 documentation for third-party modules there.
75
76 You should be able to view Perl's documentation with your man(1)
77 program by including the proper directories in the appropriate start-up
78 files, or in the MANPATH environment variable.  To find out where the
79 configuration has installed the manpages, type:
80
81     perl -V:man.dir
82
83 If the directories have a common stem, such as F</usr/local/man/man1>
84 and F</usr/local/man/man3>, you need only to add that stem
85 (F</usr/local/man>) to your man(1) configuration files or your MANPATH
86 environment variable.  If they do not share a stem, you'll have to add
87 both stems.
88
89 If that doesn't work for some reason, you can still use the
90 supplied F<perldoc> script to view module information.  You might
91 also look into getting a replacement man program.
92
93 If something strange has gone wrong with your program and you're not
94 sure where you should look for help, try the B<-w> switch first.  It
95 will often point out exactly where the trouble is.
96
97 =head1 DESCRIPTION
98
99 Perl is a language optimized for scanning arbitrary
100 text files, extracting information from those text files, and printing
101 reports based on that information.  It's also a good language for many
102 system management tasks.  The language is intended to be practical
103 (easy to use, efficient, complete) rather than beautiful (tiny,
104 elegant, minimal).
105
106 Perl combines (in the author's opinion, anyway) some of the best
107 features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
108 those languages should have little difficulty with it.  (Language
109 historians will also note some vestiges of B<csh>, Pascal, and even
110 BASIC-PLUS.)  Expression syntax corresponds quite closely to C
111 expression syntax.  Unlike most Unix utilities, Perl does not
112 arbitrarily limit the size of your data--if you've got the memory,
113 Perl can slurp in your whole file as a single string.  Recursion is of
114 unlimited depth.  And the tables used by hashes (previously called
115 "associative arrays") grow as necessary to prevent degraded
116 performance.  Perl uses sophisticated pattern matching techniques to
117 scan large amounts of data very quickly.  Although optimized for
118 scanning text, Perl can also deal with binary data, and can make dbm
119 files look like hashes.  Setuid Perl scripts are safer than C programs
120 through a dataflow tracing mechanism which prevents many stupid
121 security holes.
122
123 If you have a problem that would ordinarily use B<sed> or B<awk> or
124 B<sh>, but it exceeds their capabilities or must run a little faster,
125 and you don't want to write the silly thing in C, then Perl may be for
126 you.  There are also translators to turn your B<sed> and B<awk>
127 scripts into Perl scripts.
128
129 But wait, there's more...
130
131 Perl version 5 is nearly a complete rewrite, and provides
132 the following additional benefits:
133
134 =over 5
135
136 =item * Many usability enhancements
137
138 It is now possible to write much more readable Perl code (even within
139 regular expressions).  Formerly cryptic variable names can be replaced
140 by mnemonic identifiers.  Error messages are more informative, and the
141 optional warnings will catch many of the mistakes a novice might make.
142 This cannot be stressed enough.  Whenever you get mysterious behavior,
143 try the B<-w> switch!!!  Whenever you don't get mysterious behavior,
144 try using B<-w> anyway.
145
146 =item * Simplified grammar
147
148 The new yacc grammar is one half the size of the old one.  Many of the
149 arbitrary grammar rules have been regularized.  The number of reserved
150 words has been cut by 2/3.  Despite this, nearly all old Perl scripts
151 will continue to work unchanged.
152
153 =item * Lexical scoping
154
155 Perl variables may now be declared within a lexical scope, like "auto"
156 variables in C.  Not only is this more efficient, but it contributes
157 to better privacy for "programming in the large".  Anonymous
158 subroutines exhibit deep binding of lexical variables (closures).
159
160 =item * Arbitrarily nested data structures
161
162 Any scalar value, including any array element, may now contain a
163 reference to any other variable or subroutine.  You can easily create
164 anonymous variables and subroutines.  Perl manages your reference
165 counts for you.
166
167 =item * Modularity and reusability
168
169 The Perl library is now defined in terms of modules which can be easily
170 shared among various packages.  A package may choose to import all or a
171 portion of a module's published interface.  Pragmas (that is, compiler
172 directives) are defined and used by the same mechanism.
173
174 =item * Object-oriented programming
175
176 A package can function as a class.  Dynamic multiple inheritance and
177 virtual methods are supported in a straightforward manner and with very
178 little new syntax.  Filehandles may now be treated as objects.
179
180 =item * Embeddable and Extensible
181
182 Perl may now be embedded easily in your C or C++ application, and can
183 either call or be called by your routines through a documented
184 interface.  The XS preprocessor is provided to make it easy to glue
185 your C or C++ routines into Perl.  Dynamic loading of modules is
186 supported, and Perl itself can be made into a dynamic library.
187
188 =item * POSIX compliant
189
190 A major new module is the POSIX module, which provides access to all
191 available POSIX routines and definitions, via object classes where
192 appropriate.
193
194 =item * Package constructors and destructors
195
196 The new BEGIN and END blocks provide means to capture control as
197 a package is being compiled, and after the program exits.  As a
198 degenerate case they work just like awk's BEGIN and END when you
199 use the B<-p> or B<-n> switches.
200
201 =item * Multiple simultaneous DBM implementations
202
203 A Perl program may now access DBM, NDBM, SDBM, GDBM, and Berkeley DB
204 files from the same script simultaneously.  In fact, the old dbmopen
205 interface has been generalized to allow any variable to be tied
206 to an object class which defines its access methods.
207
208 =item * Subroutine definitions may now be autoloaded
209
210 In fact, the AUTOLOAD mechanism also allows you to define any arbitrary
211 semantics for undefined subroutine calls.  It's not for just autoloading.
212
213 =item * Regular expression enhancements
214
215 You can now specify nongreedy quantifiers.  You can now do grouping
216 without creating a backreference.  You can now write regular expressions
217 with embedded whitespace and comments for readability.  A consistent
218 extensibility mechanism has been added that is upwardly compatible with
219 all old regular expressions.
220
221 =item * Innumerable Unbundled Modules
222
223 The Comprehensive Perl Archive Network described in L<perlmodlib>
224 contains hundreds of plug-and-play modules full of reusable code.
225 See F<http://www.perl.com/CPAN> for a site near you.
226
227 =item * Compilability
228
229 While not yet in full production mode, a working perl-to-C compiler
230 does exist.  It can generate portable byte code, simple C, or
231 optimized C code.
232
233 =back
234
235 Okay, that's I<definitely> enough hype.
236
237 =head1 ENVIRONMENT
238
239 See L<perlrun>.
240
241 =head1 AUTHOR
242
243 Larry Wall <F<larry@wall.org>>, with the help of oodles of other folks.
244
245 If your Perl success stories and testimonials may be of help to others 
246 who wish to advocate the use of Perl in their applications, 
247 or if you wish to simply express your gratitude to Larry and the 
248 Perl developers, please write to <F<perl-thanks@perl.org>>.
249
250 =head1 FILES
251
252  "/tmp/perl-e$$"        temporary file for -e commands
253  "@INC"                 locations of perl libraries
254
255 =head1 SEE ALSO
256
257  a2p    awk to perl translator
258
259  s2p    sed to perl translator
260
261 =head1 DIAGNOSTICS
262
263 The B<-w> switch produces some lovely diagnostics.
264
265 See L<perldiag> for explanations of all Perl's diagnostics.
266
267 Compilation errors will tell you the line number of the error, with an
268 indication of the next token or token type that was to be examined.
269 (In the case of a script passed to Perl via B<-e> switches, each
270 B<-e> is counted as one line.)
271
272 Setuid scripts have additional constraints that can produce error
273 messages such as "Insecure dependency".  See L<perlsec>.
274
275 Did we mention that you should definitely consider using the B<-w>
276 switch?
277
278 =head1 BUGS
279
280 The B<-w> switch is not mandatory.
281
282 Perl is at the mercy of your machine's definitions of various
283 operations such as type casting, atof(), and floating-point
284 output with sprintf().
285
286 If your stdio requires a seek or eof between reads and writes on a
287 particular stream, so does Perl.  (This doesn't apply to sysread()
288 and syswrite().)
289
290 While none of the built-in data types have any arbitrary size limits
291 (apart from memory size), there are still a few arbitrary limits:  a
292 given variable name may not be longer than 255 characters, and no
293 component of your PATH may be longer than 255 if you use B<-S>.  A regular
294 expression may not compile to more than 32767 bytes internally.
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 tree,
298 or by C<perl -V>) to <F<perlbug@perl.com>>.
299 If you've succeeded in compiling perl, the perlbug script in the utils/
300 subdirectory 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