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