man pages for perl

SunOS 5.8 Last change: 15 Sep 1999
NAME
     perl - Practical Extraction and Report Language

SYNOPSIS
     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  ]
     [ argument ]  ...

DESCRIPTION
     The Perl manual pages  are  provided  with  the  programming
     modules.  To view the manual pages for the Perl modules with
     the man command, add /usr/perl5/man to the MANPATH  environ-
     ment  variable.  See  man(1)  for  more information. Running
     catman(1M) on the Perl manual pages is not supported.

     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
     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
     perllocale        Perl locale support

     perlref           Perl references
     perlreftut        Perl references short introduction
     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
     perlthrtut        Perl threads tutorial

     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

     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.)

     By default, all of the above manpages are installed  in  the
     /usr/local/man/ directory.

     Extensive  additional  documentation  for  Perl  modules  is
     available.  The  default  configuration  for perl will place
     this       additional       documentation       in       the
     /usr/local/lib/perl5/man  directory  (or  else  in  the  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
     /usr/local/man/man1  and  /usr/local/man/man3, you need only
     to add that stem (/usr/local/man) to your man(1)  configura-
     tion  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  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 -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 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.

     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...

     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  mys-
                terious  behavior,  try the -w switch!!! Whenever
                you don't get mysterious behavior, try  using  -w
                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 lexi-
                cal  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. Prag-
                mas (that is, compiler  directives)  are  defined
                and used by the same mechanism.

          o Object-oriented programming
                A package can function as a class. Dynamic multi-
                ple inheritance and virtual methods are supported
                in a straightforward manner and with very  little
                new  syntax.  Filehandles  may  now be treated as
                objects.

          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 -p or -n 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  inter-
                face  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 backrefer-
                ence. 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  perlmodlib  manpage contains hundreds of
                plug-and-play modules full of reusable code.  See
                http://www.perl.com/CPAN 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 definitely enough hype.

AVAILABILITY
     Perl is available for the vast majority of operating  system
     platforms, including most Unix-like platforms. The following
     situation is as of February 1999 and Perl 5.005_03.

     The following platforms are able  to  build  Perl  from  the
     standard    source    code    distribution    available   at
     http://www.perl.com/CPAN/src/index.html:

     AIX                                                         Linux                SCO ODT/OSR
     A/UX                                                        MachTen              Solaris
     BeOS                                                        MPE/iX               SunOS
     BSD/OS                                                      NetBSD               SVR4
     DG/UX                                                       NextSTEP             Tru64 UNIX

                                                                                           formerly known as Digital UNIX and before that DEC OSF/1
     DomainOS                                                    OpenBSD              Ultrix
     DOS DJGPP                                                   OpenSTEP             UNICOS

          in DOS mode either the DOS or OS/2 ports can be used
     DYNIX/ptx                                                   OS/2                 VMS
     FreeBSD                                                     OS390

     formerly known as MVS                                       VOS
     HP-UX                                                       PowerMAX             Windows 3.1
     Hurd                                                        QNX                  Windows 95

                                                                                           compilers; Borland, Cygwin32, Mingw32 EGCS/GCC, VC++
     IRIX                                                                             Windows 98
                                                                                      Windows NT

     The following platforms have been known to build  Perl  from
     the source but for the Perl release 5.005_03 we haven't been
     able to verify them, either  because  the  hardware/software
     platforms are rather rare or because we don't have an active
     champion on these platforms, or both.

     3bl                  FPS                   Plan 9
     AmigaOS              GENIX                 PowerUX
     ConvexOS             Greenhills            RISC/os
     CX/UX                ISC                   Stellar
     DC/OSx               MachTen 68k           SVR2
     DDE SMES             MiNT                  TIl500
     DOS EMX              MPC                   TitanOS
     DYNIX                NEWS-OS               UNICOS/mk
     EP/IX                Opus                  Unisys Dynix
     Esix                                       Unixware

     The following platforms are planned to be supported  in  the
     standard  source code distribution of the Perl release 5.006
     but are not supported in the Perl release 5.005_03:

          BS2000
          Netware
          Rhapsody
          VM/ESA

     The following platforms have their own source code distribu-
     tions        and        binaries        available        via
     http://www.perl.com/CPAN/ports/index.html:

                                   Perl release
     AS/400                        5.003
     MacOS                         5.004
     Netware                       5.003_07
     Tandem Guardian               5.004

     The following platforms have  only  binaries  available  via
     http://www.perl.com/CPAN/ports/index.html:

                                   Perl release
     Acorn RISCOS                  5.005_02
     AOS                           5.002
     LynxOS                        5.004_02

ENVIRONMENT
     See the perlrun manpage.

AUTHOR
     Larry Wall , 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  grati-
     tude  to  Larry  and  the  Perl  developers, please write to
     .

FILES
     "@INC"
           locations of perl libraries

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

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWpl5u                    |
    |_____________________________|_____________________________|
    |                             | SUNWpl5p                    |
    |_____________________________|_____________________________|
    |                             | SUNWpl5m                    |
    |_____________________________|_____________________________|

SEE ALSO
     a2p   awk to perl translator

     s2p   sed to perl translator

DIAGNOSTICS
     The -w switch produces some lovely diagnostics.

     See the perldiag 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 -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 manpage.

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

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.

BUGS
     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  .
     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.