Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PERL(1)		      User Contributed Perl Documentation	       PERL(1)

       perl - Practical	Extraction and Report Language

       ppeerrll [ --ssTTuuUU ]	   [ --hhvv ] [ --VV[:configvar] ]
	    [ --ccww ] [ --dd[:debugger] ] [	--DD[number/list]	]
	    [ --ppnnaa ] [ --FFpattern ] [ --ll[octal] ] [ --00[octal] ]
	    [ --IIdir ] [	--mm[--]module ] [	--MM[--]'module...' ]	[ --PP ]
	    [ --SS ]	[ --xx[dir] ]	 [ --ii[extension] ]
	    [ --ee 'command' ] [ ---- ] [ programfile ] [ argument ]...

       For ease	of access, the Perl manual has been split up into a number of

	   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

       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) 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
       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 --ww 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,

       Perl combines (in the author's opinion, anyway) some of the best
       features	of C, sseedd, aawwkk,	and sshh,	so people familiar with	those
       languages should	have little difficulty with it.	 (Language historians
       will also note some vestiges of ccsshh, 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 (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 sseedd or aawwkk or sshh, 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 sseedd and aawwkk scripts into	Perl

       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 --ww switch!!!
	    Whenever you don't get mysterious behavior,	try using --ww 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

       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

       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 --pp or --nn 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 perlmodlib
	    manpage contains hundreds of plug-and-play modules full of
	    reusable code.  See 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.

       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

	       AIX	       Linux	       SCO ODT/OSR
	       A/UX	       MachTen	       Solaris
	       BeOS	       MPE/iX	       SunOS
	       BSD/OS	       NetBSD	       SVR4
	       DG/UX	       NextSTEP	       Tru64 UNIX      3)
	       DomainOS	       OpenBSD	       Ultrix
	       DOS DJGPP 1)    OpenSTEP	       UNICOS
	       DYNIX/ptx       OS/2	       VMS
	       FreeBSD	       OS390	 2)    VOS
	       HP-UX	       PowerMAX	       Windows 3.1     1)
	       Hurd	       QNX	       Windows 95      1) 4)
	       IRIX			       Windows 98      1) 4)
					       Windows NT      1) 4)

	       1) in DOS mode either the DOS or	OS/2 ports can be used
	       2) formerly known as MVS
	       3) formerly known as Digital UNIX and before that DEC OSF/1
	       4) compilers: Borland, Cygwin32,	Mingw32	EGCS/GCC, VC++

       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.

	       3b1	       FPS	       Plan 9
	       AmigaOS	       GENIX	       PowerUX
	       ConvexOS	       Greenhills      RISC/os
	       CX/UX	       ISC	       Stellar
	       DC/OSx	       MachTen 68k     SVR2
	       DDE SMES	       MiNT	       TI1500
	       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:


       The following platforms have their own source code distributions	and
       binaries	available via

				       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

				       Perl release

	       Acorn RISCOS	       5.005_02
	       AOS		       5.002
	       LynxOS		       5.004_02

       See the perlrun manpage.

       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 gratitude to	Larry and the Perl developers,
       please write to <>.

	"@INC"		       locations of perl libraries

	a2p    awk to perl translator

	s2p    sed to perl translator

       The --ww 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 --ee switches,	each --ee	is
       counted as one line.)

       Setuid scripts have additional constraints that can produce error
       messages	such as	"Insecure dependency".	See the	perlsec	manpage.

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

       The --ww 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

       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

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

       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.

3rd Berkeley Distribution    perl 5.005, patch 03		       PERL(1)

N | S | D | A | E | A | F | S | D | B | N

Want to link to this manual page? Use this URL:

home | help