warn about /(?p{})/ (from Simon Cozens)
[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     perldbmfilter       Perl DBM filters
56
57     perlcompile         Perl compiler suite intro
58     perldebug           Perl debugging
59     perldiag            Perl diagnostic messages
60     perlnumber          Perl number semantics
61     perlsec             Perl security
62     perltrap            Perl traps for the unwary
63     perlport            Perl portability guide
64     perlstyle           Perl style guide
65
66     perlpod             Perl plain old documentation
67     perlbook            Perl book information
68
69     perlembed           Perl ways to embed perl in your C or C++ application
70     perlapio            Perl internal IO abstraction interface
71     perlxs              Perl XS application programming interface
72     perlxstut           Perl XS tutorial
73     perlguts            Perl internal functions for those doing extensions
74     perlcall            Perl calling conventions from C
75     perlapi             Perl API listing (autogenerated)
76     perlintern          Perl internal functions (autogenerated)
77
78     perltodo            Perl things to do
79     perlhack            Perl hackers guide
80     perlhist            Perl history records
81
82     perlamiga           Perl notes for Amiga
83     perlcygwin          Perl notes for Cygwin
84     perldos             Perl notes for DOS
85     perlhpux            Perl notes for HP-UX
86     perlos2             Perl notes for OS/2
87     perlos390           Perl notes for OS/390
88     perlvms             Perl notes for VMS
89     perlwin32           Perl notes for Windows
90
91 (If you're intending to read these straight through for the first time,
92 the suggested order will tend to reduce the number of forward references.)
93
94 By default, the manpages listed above are installed in the 
95 F</usr/local/man/> directory.  
96
97 Extensive additional documentation for Perl modules is available.  The
98 default configuration for perl will place this additional documentation
99 in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
100 subdirectory of the Perl library directory).  Some of this additional
101 documentation is distributed standard with Perl, but you'll also find
102 documentation for third-party modules there.
103
104 You should be able to view Perl's documentation with your man(1)
105 program by including the proper directories in the appropriate start-up
106 files, or in the MANPATH environment variable.  To find out where the
107 configuration has installed the manpages, type:
108
109     perl -V:man.dir
110
111 If the directories have a common stem, such as F</usr/local/man/man1>
112 and F</usr/local/man/man3>, you need only to add that stem
113 (F</usr/local/man>) to your man(1) configuration files or your MANPATH
114 environment variable.  If they do not share a stem, you'll have to add
115 both stems.
116
117 If that doesn't work for some reason, you can still use the
118 supplied F<perldoc> script to view module information.  You might
119 also look into getting a replacement man program.
120
121 If something strange has gone wrong with your program and you're not
122 sure where you should look for help, try the B<-w> switch first.  It
123 will often point out exactly where the trouble is.
124
125 =head1 DESCRIPTION
126
127 Perl is a language optimized for scanning arbitrary
128 text files, extracting information from those text files, and printing
129 reports based on that information.  It's also a good language for many
130 system management tasks.  The language is intended to be practical
131 (easy to use, efficient, complete) rather than beautiful (tiny,
132 elegant, minimal).
133
134 Perl combines (in the author's opinion, anyway) some of the best
135 features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
136 those languages should have little difficulty with it.  (Language
137 historians will also note some vestiges of B<csh>, Pascal, and even
138 BASIC-PLUS.)  Expression syntax corresponds closely to C
139 expression syntax.  Unlike most Unix utilities, Perl does not
140 arbitrarily limit the size of your data--if you've got the memory,
141 Perl can slurp in your whole file as a single string.  Recursion is of
142 unlimited depth.  And the tables used by hashes (sometimes called
143 "associative arrays") grow as necessary to prevent degraded
144 performance.  Perl can use sophisticated pattern matching techniques to
145 scan large amounts of data quickly.  Although optimized for
146 scanning text, Perl can also deal with binary data, and can make dbm
147 files look like hashes.  Setuid Perl scripts are safer than C programs
148 through a dataflow tracing mechanism that prevents many stupid
149 security holes.
150
151 If you have a problem that would ordinarily use B<sed> or B<awk> or
152 B<sh>, but it exceeds their capabilities or must run a little faster,
153 and you don't want to write the silly thing in C, then Perl may be for
154 you.  There are also translators to turn your B<sed> and B<awk>
155 scripts into Perl scripts.
156
157 But wait, there's more...
158
159 Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
160 rewrite that provides the following additional benefits:
161
162 =over
163
164 =item * modularity and reusability using innumerable modules 
165
166 Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
167
168 =item * embeddable and extensible 
169
170 Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
171 L<perlguts>, and L<xsubpp>.
172
173 =item * roll-your-own magic variables (including multiple simultaneous DBM implementations)
174
175 Described in L<perltie> and L<AnyDBM_File>.
176
177 =item * subroutines can now be overridden, autoloaded, and prototyped
178
179 Described in L<perlsub>.
180
181 =item * arbitrarily nested data structures and anonymous functions
182
183 Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
184
185 =item * object-oriented programming
186
187 Described in L<perlobj>, L<perltoot>, and L<perlbot>.
188
189 =item * compilability into C code or Perl bytecode
190
191 Described in L<B> and L<B::Bytecode>.
192
193 =item * support for light-weight processes (threads)
194
195 Described in L<perlthrtut> and L<Thread>.
196
197 =item * support for internationalization, localization, and Unicode 
198
199 Described in L<perllocale> and L<utf8>.
200
201 =item * lexical scoping
202
203 Described in L<perlsub>.
204
205 =item * regular expression enhancements
206
207 Described in L<perlre>, with additional examples in L<perlop>.
208
209 =item * enhanced debugger and interactive Perl environment, with integrated editor support
210
211 Described in L<perldebug>.
212
213 =item * POSIX 1003.1 compliant library
214
215 Described in L<POSIX>.
216
217 =back
218
219 Okay, that's I<definitely> enough hype.
220
221 =head1 AVAILABILITY
222
223 Perl is available for most operating systems, including virtually
224 all Unix-like platforms.
225
226 As of May 1999, the following platforms are able to build Perl
227 from the standard source code distribution available at
228 http://www.perl.com/CPAN/src/index.html
229
230         AIX             Linux           SCO ODT/OSR
231         A/UX            MachTen         Solaris
232         BeOS            MPE/iX          SunOS
233         BSD/OS          NetBSD          SVR4
234         DG/UX           NextSTEP        Tru64 UNIX      3)
235         DomainOS        OpenBSD         Ultrix                  
236         DOS DJGPP 1)    OpenSTEP        UNICOS                  
237         DYNIX/ptx       OS/2            VMS                     
238         FreeBSD         OS390     2)    VOS 
239         HP-UX           PowerMAX        Windows 3.1     1)      
240         Hurd            QNX             Windows 95      1) 4)   
241         IRIX                            Windows 98      1) 4)   
242                                         Windows NT      1) 4)
243
244         1) in DOS mode either the DOS or OS/2 ports can be used
245         2) formerly known as MVS
246         3) formerly known as Digital UNIX and before that DEC OSF/1     
247         4) compilers: Borland, Cygwin, Mingw32 EGCS/GCC, VC++
248                                         
249 The following platforms have been known to build Perl from source,
250 but we haven't been able to verify their status for the current release,
251 either because the hardware/software platforms are rare or
252 because we don't have an active champion on these platforms--or both.
253                                         
254         3b1             FPS             Plan 9
255         AmigaOS         GENIX           PowerUX
256         ConvexOS        Greenhills      RISC/os         
257         CX/UX           ISC             Stellar         
258         DC/OSx          MachTen 68k     SVR2            
259         DDE SMES        MiNT            TI1500          
260         DOS EMX         MPC             TitanOS         
261         Dynix           NEWS-OS         UNICOS/mk       
262         EP/IX           Opus            Unisys Dynix    
263         ESIX                            Unixware        
264
265 Support for the following platforms is planned for the next major
266 Perl release.
267
268         BS2000
269         Netware
270         Rhapsody
271         VM/ESA
272
273 The following platforms have their own source code distributions and
274 binaries available via http://www.perl.com/CPAN/ports/index.html.
275
276                                 Perl release
277
278         AS/400                  5.003
279         MacOS                   5.004
280         Netware                 5.003_07
281         Tandem Guardian         5.004
282
283 The following platforms have only binaries available via
284 http://www.perl.com/CPAN/ports/index.html.
285
286                                 Perl release
287
288         Acorn RISCOS            5.005_02
289         AOS                     5.002
290         LynxOS                  5.004_02
291
292 =head1 ENVIRONMENT
293
294 See L<perlrun>.
295
296 =head1 AUTHOR
297
298 Larry Wall <larry@wall.org>, with the help of oodles of other folks.
299
300 If your Perl success stories and testimonials may be of help to others 
301 who wish to advocate the use of Perl in their applications, 
302 or if you wish to simply express your gratitude to Larry and the 
303 Perl developers, please write to perl-thanks@perl.org .
304
305 =head1 FILES
306
307  "@INC"                 locations of perl libraries
308
309 =head1 SEE ALSO
310
311  a2p    awk to perl translator
312  s2p    sed to perl translator
313
314  http://www.perl.com/       the Perl Home Page
315  http://www.perl.com/CPAN   the Comprehensive Perl Archive
316
317 =head1 DIAGNOSTICS
318
319 The B<-w> switch produces some lovely diagnostics.
320
321 See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
322 diagnostics> pragma automatically turns Perl's normally terse warnings
323 and errors into these longer forms.
324
325 Compilation errors will tell you the line number of the error, with an
326 indication of the next token or token type that was to be examined.
327 (In a script passed to Perl via B<-e> switches, each
328 B<-e> is counted as one line.)
329
330 Setuid scripts have additional constraints that can produce error
331 messages such as "Insecure dependency".  See L<perlsec>.
332
333 Did we mention that you should definitely consider using the B<-w>
334 switch?
335
336 =head1 BUGS
337
338 The B<-w> switch is not mandatory.
339
340 Perl is at the mercy of your machine's definitions of various
341 operations such as type casting, atof(), and floating-point
342 output with sprintf().
343
344 If your stdio requires a seek or eof between reads and writes on a
345 particular stream, so does Perl.  (This doesn't apply to sysread()
346 and syswrite().)
347
348 While none of the built-in data types have any arbitrary size limits
349 (apart from memory size), there are still a few arbitrary limits:  a
350 given variable name may not be longer than 251 characters.  Line numbers
351 displayed by diagnostics are internally stored as short integers,
352 so they are limited to a maximum of 65535 (higher numbers usually being
353 affected by wraparound).
354
355 You may mail your bug reports (be sure to include full configuration
356 information as output by the myconfig program in the perl source
357 tree, or by C<perl -V>) to perlbug@perl.com .  If you've succeeded
358 in compiling perl, the perlbug script in the utils/ subdirectory
359 can be used to help mail in a bug report.
360
361 Perl actually stands for Pathologically Eclectic Rubbish Lister, but
362 don't tell anyone I said that.
363
364 =head1 NOTES
365
366 The Perl motto is "There's more than one way to do it."  Divining
367 how many more is left as an exercise to the reader.
368
369 The three principal virtues of a programmer are Laziness,
370 Impatience, and Hubris.  See the Camel Book for why.
371