5.002 beta 1
[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 For ease of access, the Perl manual has been split up into a number
8 of sections:
9
10     perl        Perl overview (this section)
11     perldata    Perl data structures
12     perlsyn     Perl syntax
13     perlop      Perl operators and precedence
14     perlre      Perl regular expressions
15     perlrun     Perl execution and options
16     perlfunc    Perl builtin functions
17     perlvar     Perl predefined variables
18     perlsub     Perl subroutines
19     perlmod     Perl modules
20     perlref     Perl references 
21     perldsc     Perl data structures intro
22     perllol     Perl data structures: lists of lists
23     perlobj     Perl objects
24     perlbot     Perl OO tricks and examples
25     perldebug   Perl debugging
26     perldiag    Perl diagnostic messages
27     perlform    Perl formats
28     perlipc     Perl interprocess communication
29     perlsec     Perl security
30     perltrap    Perl traps for the unwary
31     perlstyle   Perl style guide
32     perlxs      Perl XS application programming interface
33     perlxstut   Perl XS tutorial
34     perlguts    Perl internal functions for those doing extensions 
35     perlcall    Perl calling conventions from C
36     perlovl     Perl overloading semantics
37     perlembed   Perl how to embed perl in your C or C++ app
38     perlpod     Perl plain old documentation
39     perlbook    Perl book information
40
41 (If you're intending to read these straight through for the first time,
42 the suggested order will tend to reduce the number of forward references.)
43
44 Additional documentation for Perl modules is available in the
45 F</usr/local/man/> directory.  Some of this is distributed standard with
46 Perl, but you'll also find third-party modules there.  You should be able
47 to view this with your man(1) program by including the proper directories
48 in the appropriate start-up files.  To find out where these are, type:
49
50     perl -le 'use Config; print "@Config{man1dir,man3dir}"'
51
52 If the directories were F</usr/local/man/man1> and F</usr/local/man/man3>,
53 you would only need to add F</usr/local/man> to your MANPATH.  If 
54 they are different, you'll have to add both stems.
55
56 If that doesn't work for some reason, you can still use the
57 supplied F<perldoc> script to view module information.  You might
58 also look into getting a replacement man program.
59
60 If something strange has gone wrong with your program and you're not
61 sure where you should look for help, try the B<-w> switch first.  It
62 will often point out exactly where the trouble is.
63
64 =head1 DESCRIPTION
65
66 Perl is an interpreted language optimized for scanning arbitrary
67 text files, extracting information from those text files, and printing
68 reports based on that information.  It's also a good language for many
69 system management tasks.  The language is intended to be practical
70 (easy to use, efficient, complete) rather than beautiful (tiny,
71 elegant, minimal).  It combines (in the author's opinion, anyway) some
72 of the best features of C, B<sed>, B<awk>, and B<sh>, so people
73 familiar with those languages should have little difficulty with it.
74 (Language historians will also note some vestiges of B<csh>, Pascal,
75 and even BASIC-PLUS.)  Expression syntax corresponds quite closely to C
76 expression syntax.  Unlike most Unix utilities, Perl does not
77 arbitrarily limit the size of your data--if you've got the memory,
78 Perl can slurp in your whole file as a single string.  Recursion is
79 of unlimited depth.  And the hash tables used by associative arrays
80 grow as necessary to prevent degraded performance.  Perl uses
81 sophisticated pattern matching techniques to scan large amounts of data
82 very quickly.  Although optimized for scanning text, Perl can also
83 deal with binary data, and can make dbm files look like associative
84 arrays (where dbm is available).  Setuid Perl scripts are safer than
85 C programs through a dataflow tracing mechanism which prevents many
86 stupid security holes.  If you have a problem that would ordinarily use
87 B<sed> or B<awk> or B<sh>, but it exceeds their capabilities or must
88 run a little faster, and you don't want to write the silly thing in C,
89 then Perl may be for you.  There are also translators to turn your
90 B<sed> and B<awk> scripts into Perl scripts.
91
92 But wait, there's more...
93
94 Perl version 5 is nearly a complete rewrite, and provides
95 the following additional benefits:
96
97 =over 5
98
99 =item * Many usability enhancements
100
101 It is now possible to write much more readable Perl code (even within
102 regular expressions).  Formerly cryptic variable names can be replaced
103 by mnemonic identifiers.  Error messages are more informative, and the
104 optional warnings will catch many of the mistakes a novice might make.
105 This cannot be stressed enough.  Whenever you get mysterious behavior,
106 try the B<-w> switch!!!  Whenever you don't get mysterious behavior,
107 try using B<-w> anyway.
108
109 =item * Simplified grammar
110
111 The new yacc grammar is one half the size of the old one.  Many of the
112 arbitrary grammar rules have been regularized.  The number of reserved
113 words has been cut by 2/3.  Despite this, nearly all old Perl scripts
114 will continue to work unchanged.
115
116 =item * Lexical scoping
117
118 Perl variables may now be declared within a lexical scope, like "auto"
119 variables in C.  Not only is this more efficient, but it contributes
120 to better privacy for "programming in the large".
121
122 =item * Arbitrarily nested data structures
123
124 Any scalar value, including any array element, may now contain a
125 reference to any other variable or subroutine.  You can easily create
126 anonymous variables and subroutines.  Perl manages your reference
127 counts for you.
128
129 =item * Modularity and reusability
130
131 The Perl library is now defined in terms of modules which can be easily
132 shared among various packages.  A package may choose to import all or a
133 portion of a module's published interface.  Pragmas (that is, compiler
134 directives) are defined and used by the same mechanism.
135
136 =item * Object-oriented programming
137
138 A package can function as a class.  Dynamic multiple inheritance and
139 virtual methods are supported in a straightforward manner and with very
140 little new syntax.  Filehandles may now be treated as objects.
141
142 =item * Embeddible and Extensible
143
144 Perl may now be embedded easily in your C or C++ application, and can
145 either call or be called by your routines through a documented
146 interface.  The XS preprocessor is provided to make it easy to glue
147 your C or C++ routines into Perl.  Dynamic loading of modules is
148 supported.
149
150 =item * POSIX compliant
151
152 A major new module is the POSIX module, which provides access to all
153 available POSIX routines and definitions, via object classes where
154 appropriate.
155
156 =item * Package constructors and destructors
157
158 The new BEGIN and END blocks provide means to capture control as
159 a package is being compiled, and after the program exits.  As a
160 degenerate case they work just like awk's BEGIN and END when you
161 use the B<-p> or B<-n> switches.
162
163 =item * Multiple simultaneous DBM implementations
164
165 A Perl program may now access DBM, NDBM, SDBM, GDBM, and Berkeley DB
166 files from the same script simultaneously.  In fact, the old dbmopen
167 interface has been generalized to allow any variable to be tied
168 to an object class which defines its access methods.
169
170 =item * Subroutine definitions may now be autoloaded
171
172 In fact, the AUTOLOAD mechanism also allows you to define any arbitrary
173 semantics for undefined subroutine calls.  It's not just for autoloading.
174
175 =item * Regular expression enhancements
176
177 You can now specify non-greedy quantifiers.  You can now do grouping
178 without creating a backreference.  You can now write regular expressions
179 with embedded whitespace and comments for readability.  A consistent
180 extensibility mechanism has been added that is upwardly compatible with
181 all old regular expressions.
182
183 =back
184
185 Ok, that's I<definitely> enough hype.
186
187 =head1 ENVIRONMENT
188
189 =over 12
190
191 =item HOME
192
193 Used if chdir has no argument.
194
195 =item LOGDIR
196
197 Used if chdir has no argument and HOME is not set.
198
199 =item PATH
200
201 Used in executing subprocesses, and in finding the script if B<-S> is
202 used.
203
204 =item PERL5LIB
205
206 A colon-separated list of directories in which to look for Perl library
207 files before looking in the standard library and the current
208 directory.  If PERL5LIB is not defined, PERLLIB is used.  When running
209 taint checks (because the script was running setuid or setgid, or the
210 B<-T> switch was used), neither variable is used.  The script should
211 instead say
212
213     use lib "/my/directory";
214
215 =item PERL5DB
216
217 The command used to get the debugger code.  If unset, uses
218
219         BEGIN { require 'perl5db.pl' }
220
221 =item PERLLIB
222
223 A colon-separated list of directories in which to look for Perl library
224 files before looking in the standard library and the current
225 directory.  If PERL5LIB is defined, PERLLIB is not used.
226
227 =back
228
229 Apart from these, Perl uses no other environment variables, except
230 to make them available to the script being executed, and to child
231 processes.  However, scripts running setuid would do well to execute
232 the following lines before doing anything else, just to keep people
233 honest:
234
235     $ENV{'PATH'} = '/bin:/usr/bin';    # or whatever you need
236     $ENV{'SHELL'} = '/bin/sh' if defined $ENV{'SHELL'};
237     $ENV{'IFS'} = ''          if defined $ENV{'IFS'};
238
239 =head1 AUTHOR
240
241 Larry Wall E<lt><F<lwall@netlabs.com>E<gt>, with the help of oodles of other folks.
242
243 =head1 FILES
244
245  "/tmp/perl-e$$"        temporary file for -e commands
246  "@INC"                 locations of perl 5 libraries
247
248 =head1 SEE ALSO
249
250  a2p    awk to perl translator
251
252  s2p    sed to perl translator
253
254 =head1 DIAGNOSTICS
255
256 The B<-w> switch produces some lovely diagnostics.
257
258 See L<perldiag> for explanations of all Perl's diagnostics.
259
260 Compilation errors will tell you the line number of the error, with an
261 indication of the next token or token type that was to be examined.
262 (In the case of a script passed to Perl via B<-e> switches, each
263 B<-e> is counted as one line.)
264
265 Setuid scripts have additional constraints that can produce error
266 messages such as "Insecure dependency".  See L<perlsec>.
267
268 Did we mention that you should definitely consider using the B<-w>
269 switch?
270
271 =head1 BUGS
272
273 The B<-w> switch is not mandatory.
274
275 Perl is at the mercy of your machine's definitions of various
276 operations such as type casting, atof() and sprintf().  The latter
277 can even trigger a coredump when passed ludicrous input values.
278
279 If your stdio requires a seek or eof between reads and writes on a
280 particular stream, so does Perl.  (This doesn't apply to sysread()
281 and syswrite().)
282
283 While none of the built-in data types have any arbitrary size limits
284 (apart from memory size), there are still a few arbitrary limits:  a
285 given identifier may not be longer than 255 characters, and no
286 component of your PATH may be longer than 255 if you use B<-S>.  A regular
287 expression may not compile to more than 32767 bytes internally.
288
289 See the perl bugs database at L<http://perl.com/perl/bugs/>.
290
291 Perl actually stands for Pathologically Eclectic Rubbish Lister, but
292 don't tell anyone I said that.
293
294 =head1 NOTES
295
296 The Perl motto is "There's more than one way to do it."  Divining
297 how many more is left as an exercise to the reader.
298
299 The three principal virtues of a programmer are Laziness,
300 Impatience, and Hubris.  See the Camel Book for why.
301