311 lines
11 KiB
Plaintext
311 lines
11 KiB
Plaintext
=head1 NAME
|
|
|
|
perl - Practical Extraction and Report Language
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
B<perl> S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
|
|
S<[ B<-cw> ] [ B<-d>[:I<debugger>] ] [ B<-D>[I<number/list>] ]>
|
|
S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal>] ]>
|
|
S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ]>
|
|
S<[ B<-P> ]> S<[ B<-S> ]> S<[ B<-x>[I<dir>] ]>
|
|
S<[ B<-i>[I<extension>] ]> S<[ B<-e> I<'command'> ]
|
|
[ B<--> ] [ I<programfile> ] [ I<argument> ]...>
|
|
|
|
For ease of access, the Perl manual has been split up into several
|
|
sections:
|
|
|
|
perl Perl overview (this section)
|
|
perldelta Perl changes since previous version
|
|
perl5005delta Perl changes in version 5.005
|
|
perl5004delta Perl changes in version 5.004
|
|
perlfaq Perl frequently asked questions
|
|
perltoc Perl documentation table of contents
|
|
|
|
perldata Perl data structures
|
|
perlsyn Perl syntax
|
|
perlop Perl operators and precedence
|
|
perlre Perl regular expressions
|
|
perlrun Perl execution and options
|
|
perlfunc Perl builtin functions
|
|
perlopentut Perl open() tutorial
|
|
perlvar Perl predefined variables
|
|
perlsub Perl subroutines
|
|
perlmod Perl modules: how they work
|
|
perlmodlib Perl modules: how to write and use
|
|
perlmodinstall Perl modules: how to install from CPAN
|
|
perlform Perl formats
|
|
perlunicode Perl unicode support
|
|
perllocale Perl locale support
|
|
|
|
perlreftut Perl references short introduction
|
|
perlref Perl references, the rest of the story
|
|
perldsc Perl data structures intro
|
|
perllol Perl data structures: arrays of arrays
|
|
perlboot Perl OO tutorial for beginners
|
|
perltoot Perl OO tutorial, part 1
|
|
perltootc Perl OO tutorial, part 2
|
|
perlobj Perl objects
|
|
perltie Perl objects hidden behind simple variables
|
|
perlbot Perl OO tricks and examples
|
|
perlipc Perl interprocess communication
|
|
perlfork Perl fork() information
|
|
perlthrtut Perl threads tutorial
|
|
perllexwarn Perl warnings and their control
|
|
perlfilter Perl source filters
|
|
perldbmfilter Perl DBM filters
|
|
|
|
perlcompile Perl compiler suite intro
|
|
perldebug Perl debugging
|
|
perldiag Perl diagnostic messages
|
|
perlnumber Perl number semantics
|
|
perlsec Perl security
|
|
perltrap Perl traps for the unwary
|
|
perlport Perl portability guide
|
|
perlstyle Perl style guide
|
|
|
|
perlpod Perl plain old documentation
|
|
perlbook Perl book information
|
|
|
|
perlembed Perl ways to embed perl in your C or C++ application
|
|
perlapio Perl internal IO abstraction interface
|
|
perldebguts Perl debugging guts and tips
|
|
perlxs Perl XS application programming interface
|
|
perlxstut Perl XS tutorial
|
|
perlguts Perl internal functions for those doing extensions
|
|
perlcall Perl calling conventions from C
|
|
perlapi Perl API listing (autogenerated)
|
|
perlintern Perl internal functions (autogenerated)
|
|
|
|
perltodo Perl things to do
|
|
perlhack Perl hackers guide
|
|
perlhist Perl history records
|
|
|
|
perlamiga Perl notes for Amiga
|
|
perlcygwin Perl notes for Cygwin
|
|
perldos Perl notes for DOS
|
|
perlhpux Perl notes for HP-UX
|
|
perlmachten Perl notes for Power MachTen
|
|
perlos2 Perl notes for OS/2
|
|
perlos390 Perl notes for OS/390
|
|
perlvms Perl notes for VMS
|
|
perlwin32 Perl notes for Windows
|
|
|
|
(If you're intending to read these straight through for the first time,
|
|
the suggested order will tend to reduce the number of forward references.)
|
|
|
|
By default, the manpages listed above are installed in the
|
|
F</usr/local/man/> directory.
|
|
|
|
Extensive additional documentation for Perl modules is available. The
|
|
default configuration for perl will place this additional documentation
|
|
in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
|
|
subdirectory of the Perl library directory). Some of this additional
|
|
documentation is distributed standard with Perl, but you'll also find
|
|
documentation for third-party modules there.
|
|
|
|
You should be able to view Perl's documentation with your man(1)
|
|
program by including the proper directories in the appropriate start-up
|
|
files, or in the MANPATH environment variable. To find out where the
|
|
configuration has installed the manpages, type:
|
|
|
|
perl -V:man.dir
|
|
|
|
If the directories have a common stem, such as F</usr/local/man/man1>
|
|
and F</usr/local/man/man3>, you need only to add that stem
|
|
(F</usr/local/man>) to your man(1) configuration files or your MANPATH
|
|
environment variable. If they do not share a stem, you'll have to add
|
|
both stems.
|
|
|
|
If that doesn't work for some reason, you can still use the
|
|
supplied F<perldoc> script to view module information. You might
|
|
also look into getting a replacement man program.
|
|
|
|
If something strange has gone wrong with your program and you're not
|
|
sure where you should look for help, try the B<-w> switch first. It
|
|
will often point out exactly where the trouble is.
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Perl is a language optimized for scanning arbitrary
|
|
text files, extracting information from those text files, and printing
|
|
reports based on that information. It's also a good language for many
|
|
system management tasks. The language is intended to be practical
|
|
(easy to use, efficient, complete) rather than beautiful (tiny,
|
|
elegant, minimal).
|
|
|
|
Perl combines (in the author's opinion, anyway) some of the best
|
|
features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
|
|
those languages should have little difficulty with it. (Language
|
|
historians will also note some vestiges of B<csh>, Pascal, and even
|
|
BASIC-PLUS.) Expression syntax corresponds closely to C
|
|
expression syntax. Unlike most Unix utilities, Perl does not
|
|
arbitrarily limit the size of your data--if you've got the memory,
|
|
Perl can slurp in your whole file as a single string. Recursion is of
|
|
unlimited depth. And the tables used by hashes (sometimes called
|
|
"associative arrays") grow as necessary to prevent degraded
|
|
performance. Perl can use sophisticated pattern matching techniques to
|
|
scan large amounts of data quickly. Although optimized for
|
|
scanning text, Perl can also deal with binary data, and can make dbm
|
|
files look like hashes. Setuid Perl scripts are safer than C programs
|
|
through a dataflow tracing mechanism that prevents many stupid
|
|
security holes.
|
|
|
|
If you have a problem that would ordinarily use B<sed> or B<awk> or
|
|
B<sh>, but it exceeds their capabilities or must run a little faster,
|
|
and you don't want to write the silly thing in C, then Perl may be for
|
|
you. There are also translators to turn your B<sed> and B<awk>
|
|
scripts into Perl scripts.
|
|
|
|
But wait, there's more...
|
|
|
|
Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
|
|
rewrite that provides the following additional benefits:
|
|
|
|
=over
|
|
|
|
=item * modularity and reusability using innumerable modules
|
|
|
|
Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>.
|
|
|
|
=item * embeddable and extensible
|
|
|
|
Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>,
|
|
L<perlguts>, and L<xsubpp>.
|
|
|
|
=item * roll-your-own magic variables (including multiple simultaneous DBM implementations)
|
|
|
|
Described in L<perltie> and L<AnyDBM_File>.
|
|
|
|
=item * subroutines can now be overridden, autoloaded, and prototyped
|
|
|
|
Described in L<perlsub>.
|
|
|
|
=item * arbitrarily nested data structures and anonymous functions
|
|
|
|
Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>.
|
|
|
|
=item * object-oriented programming
|
|
|
|
Described in L<perlobj>, L<perltoot>, and L<perlbot>.
|
|
|
|
=item * compilability into C code or Perl bytecode
|
|
|
|
Described in L<B> and L<B::Bytecode>.
|
|
|
|
=item * support for light-weight processes (threads)
|
|
|
|
Described in L<perlthrtut> and L<Thread>.
|
|
|
|
=item * support for internationalization, localization, and Unicode
|
|
|
|
Described in L<perllocale> and L<utf8>.
|
|
|
|
=item * lexical scoping
|
|
|
|
Described in L<perlsub>.
|
|
|
|
=item * regular expression enhancements
|
|
|
|
Described in L<perlre>, with additional examples in L<perlop>.
|
|
|
|
=item * enhanced debugger and interactive Perl environment, with integrated editor support
|
|
|
|
Described in L<perldebug>.
|
|
|
|
=item * POSIX 1003.1 compliant library
|
|
|
|
Described in L<POSIX>.
|
|
|
|
=back
|
|
|
|
Okay, that's I<definitely> enough hype.
|
|
|
|
=head1 AVAILABILITY
|
|
|
|
Perl is available for most operating systems, including virtually
|
|
all Unix-like platforms. See L<perlport/"Supported Platforms">
|
|
for a listing.
|
|
|
|
=head1 ENVIRONMENT
|
|
|
|
See L<perlrun>.
|
|
|
|
=head1 AUTHOR
|
|
|
|
Larry Wall <larry@wall.org>, with the help of oodles of other folks.
|
|
|
|
If your Perl success stories and testimonials may be of help to others
|
|
who wish to advocate the use of Perl in their applications,
|
|
or if you wish to simply express your gratitude to Larry and the
|
|
Perl developers, please write to perl-thanks@perl.org .
|
|
|
|
=head1 FILES
|
|
|
|
"@INC" locations of perl libraries
|
|
|
|
=head1 SEE ALSO
|
|
|
|
a2p awk to perl translator
|
|
s2p sed to perl translator
|
|
|
|
http://www.perl.com/ the Perl Home Page
|
|
http://www.perl.com/CPAN the Comprehensive Perl Archive
|
|
|
|
=head1 DIAGNOSTICS
|
|
|
|
The C<use warnings> pragma (and the B<-w> switch) produces some
|
|
lovely diagnostics.
|
|
|
|
See L<perldiag> for explanations of all Perl's diagnostics. The C<use
|
|
diagnostics> pragma automatically turns Perl's normally terse warnings
|
|
and errors into these longer forms.
|
|
|
|
Compilation errors will tell you the line number of the error, with an
|
|
indication of the next token or token type that was to be examined.
|
|
(In a script passed to Perl via B<-e> switches, each
|
|
B<-e> is counted as one line.)
|
|
|
|
Setuid scripts have additional constraints that can produce error
|
|
messages such as "Insecure dependency". See L<perlsec>.
|
|
|
|
Did we mention that you should definitely consider using the B<-w>
|
|
switch?
|
|
|
|
=head1 BUGS
|
|
|
|
The B<-w> switch is not mandatory.
|
|
|
|
Perl is at the mercy of your machine's definitions of various
|
|
operations such as type casting, atof(), and floating-point
|
|
output with sprintf().
|
|
|
|
If your stdio requires a seek or eof between reads and writes on a
|
|
particular stream, so does Perl. (This doesn't apply to sysread()
|
|
and syswrite().)
|
|
|
|
While none of the built-in data types have any arbitrary size limits
|
|
(apart from memory size), there are still a few arbitrary limits: a
|
|
given variable name may not be longer than 251 characters. Line numbers
|
|
displayed by diagnostics are internally stored as short integers,
|
|
so they are limited to a maximum of 65535 (higher numbers usually being
|
|
affected by wraparound).
|
|
|
|
You may mail your bug reports (be sure to include full configuration
|
|
information as output by the myconfig program in the perl source
|
|
tree, or by C<perl -V>) to perlbug@perl.com . If you've succeeded
|
|
in compiling perl, the B<perlbug> script in the F<utils/> subdirectory
|
|
can be used to help mail in a bug report.
|
|
|
|
Perl actually stands for Pathologically Eclectic Rubbish Lister, but
|
|
don't tell anyone I said that.
|
|
|
|
=head1 NOTES
|
|
|
|
The Perl motto is "There's more than one way to do it." Divining
|
|
how many more is left as an exercise to the reader.
|
|
|
|
The three principal virtues of a programmer are Laziness,
|
|
Impatience, and Hubris. See the Camel Book for why.
|
|
|