3 perl - Practical Extraction and Report Language
7 For ease of access, the Perl manual has been split up into a number
10 perl Perl overview (this section)
11 perldata Perl data structures
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
20 perlref Perl references
21 perldsc Perl data structures intro
22 perllol Perl data structures: lists of lists
24 perlbot Perl OO tricks and examples
25 perldebug Perl debugging
26 perldiag Perl diagnostic messages
28 perlipc Perl interprocess communication
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
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.)
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:
50 perl -le 'use Config; print "@Config{man1dir,man3dir}"'
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.
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.
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.
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.
92 But wait, there's more...
94 Perl version 5 is nearly a complete rewrite, and provides
95 the following additional benefits:
99 =item * Many usability enhancements
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.
109 =item * Simplified grammar
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.
116 =item * Lexical scoping
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".
122 =item * Arbitrarily nested data structures
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
129 =item * Modularity and reusability
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.
136 =item * Object-oriented programming
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.
142 =item * Embeddible and Extensible
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
150 =item * POSIX compliant
152 A major new module is the POSIX module, which provides access to all
153 available POSIX routines and definitions, via object classes where
156 =item * Package constructors and destructors
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.
163 =item * Multiple simultaneous DBM implementations
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.
170 =item * Subroutine definitions may now be autoloaded
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.
175 =item * Regular expression enhancements
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.
185 Ok, that's I<definitely> enough hype.
193 Used if chdir has no argument.
197 Used if chdir has no argument and HOME is not set.
201 Used in executing subprocesses, and in finding the script if B<-S> is
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
213 use lib "/my/directory";
217 The command used to get the debugger code. If unset, uses
219 BEGIN { require 'perl5db.pl' }
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.
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
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'};
241 Larry Wall E<lt><F<lwall@netlabs.com>E<gt>, with the help of oodles of other folks.
245 "/tmp/perl-e$$" temporary file for -e commands
246 "@INC" locations of perl 5 libraries
250 a2p awk to perl translator
252 s2p sed to perl translator
256 The B<-w> switch produces some lovely diagnostics.
258 See L<perldiag> for explanations of all Perl's diagnostics.
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.)
265 Setuid scripts have additional constraints that can produce error
266 messages such as "Insecure dependency". See L<perlsec>.
268 Did we mention that you should definitely consider using the B<-w>
273 The B<-w> switch is not mandatory.
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.
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()
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.
289 See the perl bugs database at L<http://perl.com/perl/bugs/>.
291 Perl actually stands for Pathologically Eclectic Rubbish Lister, but
292 don't tell anyone I said that.
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.
299 The three principal virtues of a programmer are Laziness,
300 Impatience, and Hubris. See the Camel Book for why.