home *** CD-ROM | disk | FTP | other *** search
-
-
-
- PPPPEEEERRRRLLLL((((1111)))) PPPPEEEERRRRLLLL((((1111))))
-
-
-
- NNNNAAAAMMMMEEEE
- perl - Practical Extraction and Report Language
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ppppeeeerrrrllll [ ----ssssTTTTuuuuUUUU ] [ ----hhhhvvvv ] [ ----VVVV[:_c_o_n_f_i_g_v_a_r] ]
- [ ----ccccwwww ] [ ----dddd[:_d_e_b_u_g_g_e_r] ] [ ----DDDD[_n_u_m_b_e_r/_l_i_s_t] ]
- [ ----ppppnnnnaaaa ] [ ----FFFF_p_a_t_t_e_r_n ] [ ----llll[_o_c_t_a_l] ] [ ----0000[_o_c_t_a_l] ]
- [ ----IIII_d_i_r ] [ ----mmmm[----]_m_o_d_u_l_e ] [ ----MMMM[----]'_m_o_d_u_l_e...' ] [ ----PPPP ]
- [ ----SSSS ] [ ----xxxx[_d_i_r] ] [ ----iiii[_e_x_t_e_n_s_i_o_n] ]
- [ ----eeee '_c_o_m_m_a_n_d' ] [ -------- ] [ _p_r_o_g_r_a_m_f_i_l_e ] [ _a_r_g_u_m_e_n_t ]...
-
- For ease of access, the Perl manual has been split up into a number of
- sections:
-
- perl Perl overview (this section)
- perldelta Perl changes since previous version
- 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
- 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
- perllocale Perl locale support
-
- perlref Perl references
- perldsc Perl data structures intro
- perllol Perl data structures: lists of lists
- perltoot Perl OO tutorial
- perlobj Perl objects
- perltie Perl objects hidden behind simple variables
- perlbot Perl OO tricks and examples
- perlipc Perl interprocess communication
-
- perldebug Perl debugging
- perldiag Perl diagnostic messages
- 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
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- PPPPEEEERRRRLLLL((((1111)))) PPPPEEEERRRRLLLL((((1111))))
-
-
-
- perlembed Perl ways to embed perl in your C or C++ application
- perlapio Perl internal IO abstraction interface
- perlxs Perl XS application programming interface
- perlxstut Perl XS tutorial
- perlguts Perl internal functions for those doing extensions
- perlcall Perl calling conventions from C
-
- perlhist Perl history records
-
- (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.)
-
- The above manpages are installed in the /_u_s_r/_s_h_a_r_e/_c_a_t_m_a_n/_u__m_a_n/_c_a_t_1/
- directory.
-
- Extensive additional documentation for Perl modules is available. The
- IRIX configuration of perl places the documentation for the standard
- modules in the /_u_s_r/_s_h_a_r_e/_c_a_t_m_a_n/_p__m_a_n/_c_a_t_3/_p_e_r_l_5/ directory. The
- documentation for third-party modules will by default be installed into
- the /_u_s_r/_c_a_t_m_a_n/_l_o_c_a_l/_m_a_n_3/_p_e_r_l_5/ directory. These directories are all
- in the standard IRIX MANPATH.
-
- If something strange has gone wrong with your program and you're not sure
- where you should look for help, try the ----wwww switch first. It will often
- point out exactly where the trouble is.
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- 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, sssseeeedddd, aaaawwwwkkkk, and sssshhhh, so people familiar with those languages should
- have little difficulty with it. (Language historians will also note some
- vestiges of ccccsssshhhh, Pascal, and even BASIC-PLUS.) Expression syntax
- corresponds quite 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
- (previously called "associative arrays") grow as necessary to prevent
- degraded performance. Perl uses sophisticated pattern matching
- techniques to scan large amounts of data very 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 which prevents many stupid
- security holes.
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- PPPPEEEERRRRLLLL((((1111)))) PPPPEEEERRRRLLLL((((1111))))
-
-
-
- If you have a problem that would ordinarily use sssseeeedddd or aaaawwwwkkkk or sssshhhh, 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 sssseeeedddd and aaaawwwwkkkk scripts into Perl scripts.
-
- But wait, there's more...
-
- Perl version 5 is nearly a complete rewrite, and provides the following
- additional benefits:
-
- +o Many usability enhancements
- It is now possible to write much more readable Perl code (even
- within regular expressions). Formerly cryptic variable names can be
- replaced by mnemonic identifiers. Error messages are more
- informative, and the optional warnings will catch many of the
- mistakes a novice might make. This cannot be stressed enough.
- Whenever you get mysterious behavior, try the ----wwww switch!!! Whenever
- you don't get mysterious behavior, try using ----wwww anyway.
-
- +o Simplified grammar
- The new yacc grammar is one half the size of the old one. Many of
- the arbitrary grammar rules have been regularized. The number of
- reserved words has been cut by 2/3. Despite this, nearly all old
- Perl scripts will continue to work unchanged.
-
- +o Lexical scoping
- Perl variables may now be declared within a lexical scope, like
- "auto" variables in C. Not only is this more efficient, but it
- contributes to better privacy for "programming in the large".
- Anonymous subroutines exhibit deep binding of lexical variables
- (closures).
-
- +o Arbitrarily nested data structures
- Any scalar value, including any array element, may now contain a
- reference to any other variable or subroutine. You can easily
- create anonymous variables and subroutines. Perl manages your
- reference counts for you.
-
- +o Modularity and reusability
- The Perl library is now defined in terms of modules which can be
- easily shared among various packages. A package may choose to
- import all or a portion of a module's published interface. Pragmas
- (that is, compiler directives) are defined and used by the same
- mechanism.
-
- +o Object-oriented programming
- A package can function as a class. Dynamic multiple inheritance and
- virtual methods are supported in a straightforward manner and with
- very little new syntax. Filehandles may now be treated as objects.
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- PPPPEEEERRRRLLLL((((1111)))) PPPPEEEERRRRLLLL((((1111))))
-
-
-
- +o Embeddable and Extensible
- Perl may now be embedded easily in your C or C++ application, and
- can either call or be called by your routines through a documented
- interface. The XS preprocessor is provided to make it easy to glue
- your C or C++ routines into Perl. Dynamic loading of modules is
- supported, and Perl itself can be made into a dynamic library.
-
- +o POSIX compliant
- A major new module is the POSIX module, which provides access to all
- available POSIX routines and definitions, via object classes where
- appropriate.
-
- +o Package constructors and destructors
- The new BEGIN and END blocks provide means to capture control as a
- package is being compiled, and after the program exits. As a
- degenerate case they work just like awk's BEGIN and END when you use
- the ----pppp or ----nnnn switches.
-
- +o Multiple simultaneous DBM implementations
- A Perl program may now access DBM, NDBM, SDBM, GDBM, and Berkeley DB
- files from the same script simultaneously. In fact, the old dbmopen
- interface has been generalized to allow any variable to be tied to
- an object class which defines its access methods.
-
- +o Subroutine definitions may now be autoloaded
- In fact, the AUTOLOAD mechanism also allows you to define any
- arbitrary semantics for undefined subroutine calls. It's not for
- just autoloading.
-
- +o Regular expression enhancements
- You can now specify nongreedy quantifiers. You can now do grouping
- without creating a backreference. You can now write regular
- expressions with embedded whitespace and comments for readability.
- A consistent extensibility mechanism has been added that is upwardly
- compatible with all old regular expressions.
-
- +o Innumerable Unbundled Modules
- The Comprehensive Perl Archive Network described in the _p_e_r_l_m_o_d_l_i_b
- manpage contains hundreds of plug-and-play modules full of reusable
- code. See _h_t_t_p://_w_w_w._p_e_r_l._c_o_m/_C_P_A_N for a site near you.
-
- +o Compilability
- While not yet in full production mode, a working perl-to-C compiler
- does exist. It can generate portable byte code, simple C, or
- optimized C code.
-
- Okay, that's _d_e_f_i_n_i_t_e_l_y enough hype.
-
- EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
- See the _p_e_r_l_r_u_n manpage.
-
-
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-
-
-
- PPPPEEEERRRRLLLL((((1111)))) PPPPEEEERRRRLLLL((((1111))))
-
-
-
- AAAAUUUUTTTTHHHHOOOORRRR
- Larry Wall <_l_a_r_r_y@_w_a_l_l._o_r_g>, 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 <_p_e_r_l-_t_h_a_n_k_s@_p_e_r_l._o_r_g>.
-
- FFFFIIIILLLLEEEESSSS
- "@INC" locations of perl libraries
-
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- a2p awk to perl translator
-
- s2p sed to perl translator
-
-
- DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
- The ----wwww switch produces some lovely diagnostics.
-
- See the _p_e_r_l_d_i_a_g manpage for explanations of all Perl's diagnostics. The
- 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
- the case of a script passed to Perl via ----eeee switches, each ----eeee is counted
- as one line.)
-
- Setuid scripts have additional constraints that can produce error
- messages such as "Insecure dependency". See the _p_e_r_l_s_e_c manpage.
-
- Did we mention that you should definitely consider using the ----wwww switch?
-
- IIIIRRRRIIIIXXXX SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCSSSS
- Perl is compiled with a shared libperl.so, which lives in the /_u_s_r/_l_i_b_3_2
- directory. It is compiled with 5.003 compatibility on.
-
- Perl's standard library installs into /_u_s_r/_s_h_a_r_e/_l_i_b/_p_e_r_l_5/, which may be
- NFS mounted read-only. In that case, and if you wish to install modules
- locally, you should consider moving the /_u_s_r/_s_h_a_r_e/_l_i_b/_p_e_r_l_5/_s_i_t_e__p_e_r_l/
- directory to some place on the local disk, and create a symlink.
-
- Perl is compiled ----nnnn33332222 ----mmmmiiiippppssss3333. If you have any compiled modules from an
- older IRIX release, they are probably compiled ----33332222, and will have to be
- recompiled before they will work. If your modules use libraries that are
- not available in ----nnnn33332222, then you will need a version of perl compiled to
- that ABI. You cannot link or load objects of different ABI. A version of
- perl compiled ----33332222 is available via SGI Freeware (CDROM or various Web
- locations).
-
-
-
-
- PPPPaaaaggggeeee 5555
-
-
-
-
-
-
- PPPPEEEERRRRLLLL((((1111)))) PPPPEEEERRRRLLLL((((1111))))
-
-
-
- Perl is compiled to use ddddrrrraaaannnndddd44448888(((()))) as Perl's rrrraaaannnndddd(((()))) function, instead of
- the standard, weak PRNG.
-
- BBBBUUUUGGGGSSSS
- The ----wwww switch is not mandatory.
-
- Perl is at the mercy of your machine's definitions of various operations
- such as type casting, _a_t_o_f(), and floating-point output with _s_p_r_i_n_t_f().
-
- If your stdio requires a seek or eof between reads and writes on a
- particular stream, so does Perl. (This doesn't apply to _s_y_s_r_e_a_d() and
- _s_y_s_w_r_i_t_e().)
-
- 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 255 characters, and no
- component of your PATH may be longer than 255 if you use ----SSSS. A regular
- expression may not compile to more than 32767 bytes internally.
-
- 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 perl -V) to <_p_e_r_l_b_u_g@_p_e_r_l._c_o_m>. If you've succeeded in compiling
- perl, the perlbug script in the 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.
-
- NNNNOOOOTTTTEEEESSSS
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 6666
-
-
-
-
-
-
- PPPPEEEERRRRLLLL((((1111)))) PPPPEEEERRRRLLLL((((1111))))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 7777
-
-
-
-
-
-
-