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