3 perl - Practical Extraction and Report Language
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> ]...>
15 For ease of access, the Perl manual has been split up into several
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
25 perldata Perl data structures
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
38 perlunicode Perl unicode support
39 perllocale Perl locale support
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
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
57 perlcompile Perl compiler suite intro
58 perldebug Perl debugging
59 perldiag Perl diagnostic messages
60 perlnumber Perl number semantics
62 perltrap Perl traps for the unwary
63 perlport Perl portability guide
64 perlstyle Perl style guide
66 perlpod Perl plain old documentation
67 perlbook Perl book information
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)
78 perltodo Perl things to do
79 perlhack Perl hackers guide
80 perlhist Perl history records
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
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.)
94 By default, the manpages listed above are installed in the
95 F</usr/local/man/> directory.
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.
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:
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
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.
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.
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,
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
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.
157 But wait, there's more...
159 Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
160 rewrite that provides the following additional benefits:
164 =item * modularity and reusability using innumerable modules
166 Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
168 =item * embeddable and extensible
170 Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
171 L<perlguts>, and L<xsubpp>.
173 =item * roll-your-own magic variables (including multiple simultaneous DBM implementations)
175 Described in L<perltie> and L<AnyDBM_File>.
177 =item * subroutines can now be overridden, autoloaded, and prototyped
179 Described in L<perlsub>.
181 =item * arbitrarily nested data structures and anonymous functions
183 Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
185 =item * object-oriented programming
187 Described in L<perlobj>, L<perltoot>, and L<perlbot>.
189 =item * compilability into C code or Perl bytecode
191 Described in L<B> and L<B::Bytecode>.
193 =item * support for light-weight processes (threads)
195 Described in L<perlthrtut> and L<Thread>.
197 =item * support for internationalization, localization, and Unicode
199 Described in L<perllocale> and L<utf8>.
201 =item * lexical scoping
203 Described in L<perlsub>.
205 =item * regular expression enhancements
207 Described in L<perlre>, with additional examples in L<perlop>.
209 =item * enhanced debugger and interactive Perl environment, with integrated editor support
211 Described in L<perldebug>.
213 =item * POSIX 1003.1 compliant library
215 Described in L<POSIX>.
219 Okay, that's I<definitely> enough hype.
223 Perl is available for most operating systems, including virtually
224 all Unix-like platforms.
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
230 AIX Linux SCO ODT/OSR
234 DG/UX NextSTEP Tru64 UNIX 3)
235 DomainOS OpenBSD Ultrix
236 DOS DJGPP 1) OpenSTEP UNICOS
239 HP-UX PowerMAX Windows 3.1 1)
240 Hurd QNX Windows 95 1) 4)
241 IRIX Windows 98 1) 4)
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++
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.
255 AmigaOS GENIX PowerUX
256 ConvexOS Greenhills RISC/os
258 DC/OSx MachTen 68k SVR2
261 Dynix NEWS-OS UNICOS/mk
262 EP/IX Opus Unisys Dynix
265 Support for the following platforms is planned for the next major
273 The following platforms have their own source code distributions and
274 binaries available via http://www.perl.com/CPAN/ports/index.html.
281 Tandem Guardian 5.004
283 The following platforms have only binaries available via
284 http://www.perl.com/CPAN/ports/index.html.
288 Acorn RISCOS 5.005_02
298 Larry Wall <larry@wall.org>, with the help of oodles of other folks.
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 .
307 "@INC" locations of perl libraries
311 a2p awk to perl translator
312 s2p sed to perl translator
314 http://www.perl.com/ the Perl Home Page
315 http://www.perl.com/CPAN the Comprehensive Perl Archive
319 The B<-w> switch produces some lovely diagnostics.
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.
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.)
330 Setuid scripts have additional constraints that can produce error
331 messages such as "Insecure dependency". See L<perlsec>.
333 Did we mention that you should definitely consider using the B<-w>
338 The B<-w> switch is not mandatory.
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().
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()
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).
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.
361 Perl actually stands for Pathologically Eclectic Rubbish Lister, but
362 don't tell anyone I said that.
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.
369 The three principal virtues of a programmer are Laziness,
370 Impatience, and Hubris. See the Camel Book for why.