perl - Practical Extraction and Report Language


     perl [-sTuU] [-hv]  [-V[:configvar]]  [-cw]  [-d[:debugger]]
     [-D[number/list]] [-pna] [-Fpattern] [-l[octal]] [-0[octal]]
     [-Idir] [-m[-]module] [-M[-]'module...'] [-P] [-S] [-x[dir]]
     [-i[extension]]  [-e  'command']  [--] [programfile]  [argu-


     For ease of access, the Perl manual has been split  up  into
     several sections:

     perl              Perl overview (this section)
     perlfaq           Perl frequently asked questions
     perltoc           Perl documentation table of contents
     perlbook          Perl book information

     perlsyn           Perl syntax
     perldata          Perl data structures
     perlop            Perl operators and precedence
     perlsub           Perl subroutines
     perlfunc          Perl builtin functions
     perlreftut        Perl references short introduction
     perldsc           Perl data structures intro
     perlrequick       Perl regular expressions quick start
     perlpod           Perl plain old documentation
     perlstyle         Perl style guide
     perltrap          Perl traps for the unwary

     perlrun           Perl execution and options
     perldiag          Perl diagnostic messages
     perllexwarn       Perl warnings and their control
     perldebtut        Perl debugging tutorial
     perldebug         Perl debugging

     perlvar           Perl predefined variables
     perllol           Perl data structures: arrays of arrays
     perlopentut       Perl open() tutorial
     perlretut         Perl regular expressions tutorial

     perlre            Perl regular expressions, the rest of the story
     perlref           Perl references, the rest of the story

     perlform          Perl formats
     perlboot          Perl OO tutorial for beginners
     perltoot          Perl OO tutorial, part 1
     perltootc         Perl OO tutorial, part 2
     perlobj           Perl objects
     perlbot           Perl OO tricks and examples
     perltie           Perl objects hidden behind simple variables
     perlipc           Perl interprocess communication
     perlfork          Perl fork() information
     perlnumber        Perl number semantics
     perlthrtut        Perl threads tutorial

     perlport          Perl portability guide
     perllocale        Perl locale support
     perlunicode       Perl unicode support

     perlsec           Perl security

     perlmod           Perl modules: how they work
     perlmodlib        Perl modules: how to write and use
     perlmodinstall    Perl modules: how to install from CPAN
     perlnewmod        Perl modules: preparing a new module for distribution

     perlfaq1          General Questions About Perl
     perlfaq2          Obtaining and Learning about Perl
     perlfaq3          Programming Tools
     perlfaq4          Data Manipulation
     perlfaq5          Files and Formats
     perlfaq6          Regexes
     perlfaq7          Perl Language Issues
     perlfaq8          System Interaction
     perlfaq9          Networking

     perlcompile       Perl compiler suite intro

     perlembed         Perl ways to embed perl in your C or C++ application
     perldebguts       Perl debugging guts and tips
     perlxstut         Perl XS tutorial
     perlxs            Perl XS application programming interface
     perlclib          Internal replacements for standard C library functions
     perlguts          Perl internal functions for those doing extensions
     perlcall          Perl calling conventions from C
     perlutil          utilities packaged with the Perl distribution
     perlfilter        Perl source filters
     perldbmfilter     Perl DBM filters
     perlapi           Perl API listing (autogenerated)
     perlintern        Perl internal functions (autogenerated)
     perlapio          Perl internal IO abstraction interface
     perltodo          Perl things to do
     perlhack          Perl hackers guide

     perlhist          Perl history records
     perldelta         Perl changes since previous version
     perl5005delta     Perl changes in version 5.005
     perl5004delta     Perl changes in version 5.004

     perlsolaris       Perl notes for Solaris

     (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   manpages   listed   above   are   installed   in   the
     /usr/perl5/man/ directory.

     Extensive  additional  documentation  for  Perl  modules  is
     available.  This  additional  documentation  is  also in the
     /usr/local/lib/perl5/man directory. Some of this  additional
     documentation  is  distributed  as  standard  with Perl, but
     you'll also find documentation  for  any  customer-installed
     third-party modules there.

     Notice that running catman(1M) on the Perl manual  pages  is
     not  supported.  For other Solaris-specific details, see the
     NOTES section below.

     You can also use the supplied /usr/perl5/bin/perldoc  script
     to view Perl information.

     If something strange has gone wrong with  your  program  and
     you're  not  sure where you should look for help, try the -w
     switch first. It will often  point  out  exactly  where  the
     trouble is.

     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,  sed, awk, and sh, so people familiar
     with those languages should have little difficulty with  it.
     (Language  historians  will  also note some vestiges of csh,
     Pascal, and even BASIC-PLUS.) Expression syntax  corresponds
     quite closely to C expression syntax. Unlike most Unix util-
     ities, 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 sed  or  awk
     or  sh, but it exceeds their capabilities or must run a lit-
     tle 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 sed and awk scripts into Perl scripts.

     But wait, there's more...

     Begun in 1993 (see the perlhist man page), Perl version 5 is
     nearly  a complete rewrite that provides the following addi-
     tional benefits:

          o Modularity and reusability using innumerable modules
                Described in the perlmod man page, the perlmodlib
                man page, and the perlmodinstall man page.

          o Embeddable and Extensible
                Described in the perlembed man page,  the  perlx-
                stut  man page, the perlxs man page, the perlcall
                man page, the perlguts man page, and  the  xsubpp
                man page.

          o Roll-your-own magic variables
                (Including multiple simultaneous DBM  implementa-
                tions)  Described in the perltie man page and the
                AnyDBM_File man page.

          o Subroutines can now be overridden,
                autoloaded,  and  prototyped.  Described  in  the
                perlsub man page.

          o Arbitrarily nested data structures
                and  anonymous  functions.   Described   in   the
                perlreftut  man  page,  the perlref man page, the
                perldsc man page, and the perllol man page.

          o Object-oriented programming
                Described in the perlobj man page,  the  perltoot
                man page, and the perlbot man page.

          o Compilability into C code or Perl bytecode
                Described in the B man page and  the  B::Bytecode
                man page.

          o Support for light-weight processes (threads)
                Described in the  perlthrtut  man  page  and  the
                Thread  man page. Notice that the Perl shipped as
                part of Solaris does  NOT  have  threads  support
                enabled.  If  you  require  threads  support, you
                should build and install your  own  Perl  version
                (see the NOTES section below).

          o Support for internationalization, localization,
                and Unicode. Described in the perllocale man page
                and the utf8 man page.

          o Lexical scoping
                Described in the perlsub man page.

          o Regular expression enhancements
                Described in the perlre man page, with additional
                examples in the perlop man page.

          o Enhanced debugger and interactive Perl environment,
                with integrated editor support. Described in  the
                perldebug man page.

          o POSIX 1003.1 compliant
                Described in the POSIX man page.

     Okay, that's definitely enough hype.


     Perl is available for most operating systems, including vir-
     tually  all Unix-like platforms. See the Supported Platforms
     entry in the perlport man page for a listing.


     The Perl shipped with Solaris is installed under  /usr/perl5
     rather than the default /usr/local location. This is so that
     it can coexist with a customer-installed Perl in the default
     /usr/local location.

     Any additional modules that you choose to  install  will  be
     placed  in  the  /usr/perl5/site_perl/5.6.1  directory.  The
     /usr/perl5/vendor_perl  directory  is  reserved   for   SMI-
     provided modules.

     Notice that the Perl utility scripts  such  as  perldoc  and
     perlbug  are in the /usr/perl5/bin directory, so if you wish
     to use them you need to include /usr/perl5/bin in your  PATH
     environment variable.

     See also the perlrun man page.


     Larry Wall , with the help of oodles of other folks.


           Locations of Perl libraries


     See attributes(5) for descriptions of the  following  attri-

    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    | Availability                | SUNWpl5u  SUNWpl5m          |
    |                             | SUNWpl5p                    |
    |                             | SUNWopl5u  SUNWopl5m        |
    |                             | SUNWopl5p                   |
    | Interface Stability         |                             |
    |   o Script interface        | Evolving                    |
    |   o XSUB interface          | Evolving                    |
    |   o Binary interface        | Unstable                    |
    |   o Directory layout        | Evolving                    |


     a2p   awk to perl translator

     s2p   sed to perl translator
           The Perl Home Page
           The Comprehensive Perl Archive


     The "use warnings" pragma (and the -w switch) produces  some
     lovely diagnostics.

     See the perldiag man page 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 a script passed to Perl via  -e
     switches, each -e is counted as one line.)

     Setuid scripts have additional constraints that can  produce
     error  messages such as "Insecure dependency". See the perl-
     sec man page.

     Did we mention that you should definitely consider using the
     -w switch?


     Solaris 9  contains  two  versions  of  Perl,  5.005_03  (as
     shipped  in Solaris 8) and 5.6.1. /bin/perl is a link to the
     5.6.1 interpreter, and  /usr/perl5/bin  is  a  link  to  the
     /usr/perl5/5.6.1/bin  directory.   It is likely that version
     5.005_03 will be removed in a future release of Solaris.

     Perl 5.6.1 has been built to be largefile-aware and  to  use
     64-bit integers, although the interpreter itself is a 32-bit
     application (LP32).  To view detailed configuration informa-
     tion, use perl -V and perlbug -dv.

     Notice that 5.6.1 is binary incompatible with  the  5.005_03
     version,  primarily  due to the addition of largefile/64-bit
     integer  support.  Existing  customer-installed   XSUB-based
     modules  will  require  recompilation,  and non-XSUB modules
     will require reinstallation.

     If you have any  applications  that  require  5.005_03,  you
     should      make      sure      they      explicitly     use
     /usr/perl5/5.005_03/bin/perl. It is also  possible  to  make
     5.005_03  the  default  Perl  version,  although this is not
     recommended. The steps for this would be (as root):

     # rm /usr/bin/perl
     # ln -s ../perl5/5.00503/bin/perl /usr/bin/perl
     # rm /usr/perl5/bin
     # ln -s ./5.00503/bin /usr/perl5/bin
     # rm /usr/perl5/man
     # ln -s ./5.00503/man /usr/perl5/man
     # rm /usr/perl5/pod
     # ln -s ./5.00503/pod /usr/perl5/pod

     If you wish to build and install your own version  of  Perl,
     you  should  NOT  remove  the  5.6.1  version  of perl under
     /usr/perl5, as it is required by several  system  utilities.
     If  you  do  not  want  to use the 5.005_03 version, you may
     remove that if you wish. The Perl package names are as  fol-

     SUNWpl5u     Perl 5.6.1
     SUNWpl5p     Perl 5.6.1 (POD Documentation)
     SUNWpl5m     Perl 5.6.1 (Manual pages)
     SUNWopl5u    Perl 5.005_03
     SUNWopl5p    Perl 5.005_03 (POD Documentation)
     SUNWopl5m    Perl 5.005_03 (Manual pages)

     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.


     The -w switch is not mandatory.

     Perl is at the mercy of your machine's definitions of  vari-
     ous  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  con-
     figuration  information as output by the myconfig program in
     the Perl source tree, or by perl -V) to  <>.

     Perl actually stands  for  Pathologically  Eclectic  Rubbish
     Lister, but don't tell anyone I said that.

Man(1) output converted with man2html