From Linux Man Pages
perltoc - perl documentation table of contents
DESCRIPTION
This page provides a brief table of contents for the rest of the Perl
documentation set. It is meant to be scanned quickly or grepped
through to locate the proper section you're looking for.
BASIC DOCUMENTATION
perl - Practical Extraction and Report Language
SYNOPSIS
Overview
Tutorials
Reference Manual
Internals and C Language Interface
Miscellaneous
Language-Specific
Platform-Specific
DESCRIPTION
AVAILABILITY
ENVIRONMENT
AUTHOR
FILES
SEE ALSO
DIAGNOSTICS
BUGS
NOTES
perlintro -- a brief introduction and overview of Perl
DESCRIPTION
What is Perl?
Running Perl programs
Basic syntax overview
Perl variable types
Scalars, Arrays, Hashes
Variable scoping
Conditional and looping constructs
if, while, for, foreach
Builtin operators and functions
Arithmetic, Numeric comparison, String comparison, Boolean
logic, Miscellaneous
Files and I/O
Regular expressions
Simple matching, Simple substitution, More complex regular
expressions, Parentheses for capturing, Other regexp features
Writing subroutines
OO Perl
Using Perl modules
AUTHOR
perlreftut - Mark's very short tutorial about references
DESCRIPTION
Who Needs Complicated Data Structures?
The Solution
Syntax
Making References
Using References
An Example
Arrow Rule
Solution
The Rest
Summary
Credits
Distribution Conditions
perldsc - Perl Data Structures Cookbook
DESCRIPTION
arrays of arrays, hashes of arrays, arrays of hashes, hashes of
hashes, more elaborate constructs
REFERENCES
COMMON MISTAKES
CAVEAT ON PRECEDENCE
WHY YOU SHOULD ALWAYS "use strict"
DEBUGGING
CODE EXAMPLES
ARRAYS OF ARRAYS
Declaration of an ARRAY OF ARRAYS
Generation of an ARRAY OF ARRAYS
Access and Printing of an ARRAY OF ARRAYS
HASHES OF ARRAYS
Declaration of a HASH OF ARRAYS
Generation of a HASH OF ARRAYS
Access and Printing of a HASH OF ARRAYS
ARRAYS OF HASHES
Declaration of an ARRAY OF HASHES
Generation of an ARRAY OF HASHES
Access and Printing of an ARRAY OF HASHES
HASHES OF HASHES
Declaration of a HASH OF HASHES
Generation of a HASH OF HASHES
Access and Printing of a HASH OF HASHES
MORE ELABORATE RECORDS
Declaration of MORE ELABORATE RECORDS
Declaration of a HASH OF COMPLEX RECORDS
Generation of a HASH OF COMPLEX RECORDS
Database Ties
SEE ALSO
AUTHOR
perllol - Manipulating Arrays of Arrays in Perl
DESCRIPTION
Declaration and Access of Arrays of Arrays
Growing Your Own
Access and Printing
Slices
SEE ALSO
AUTHOR
perlrequick - Perl regular expressions quick start
DESCRIPTION
The Guide
Simple word matching
Using character classes
Matching this or that
Grouping things and hierarchical matching
Extracting matches
Matching repetitions
More matching
Search and replace
The split operator
BUGS
SEE ALSO
AUTHOR AND COPYRIGHT
Acknowledgments
perlretut - Perl regular expressions tutorial
DESCRIPTION
Part 1: The basics
Simple word matching
Using character classes
Matching this or that
Grouping things and hierarchical matching
Extracting matches
Matching repetitions
Building a regexp
Using regular expressions in Perl
Part 2: Power tools
More on characters, strings, and character classes
Compiling and saving regular expressions
Embedding comments and modifiers in a regular expression
Non-capturing groupings
Looking ahead and looking behind
Using independent subexpressions to prevent backtracking
Conditional expressions
A bit of magic: executing Perl code in a regular expression
Pragmas and debugging
BUGS
SEE ALSO
AUTHOR AND COPYRIGHT
Acknowledgments
perlboot - Beginner's Object-Oriented Tutorial
DESCRIPTION
If we could talk to the animals...
Introducing the method invocation arrow
Invoking a barnyard
The extra parameter of method invocation
Calling a second method to simplify things
Inheriting the windpipes
A few notes about @ISA
Overriding the methods
Starting the search from a different place
The SUPER way of doing things
Where we're at so far...
A horse is a horse, of course of course -- or is it?
Invoking an instance method
Accessing the instance data
How to build a horse
Inheriting the constructor
Making a method work with either classes or instances
Adding parameters to a method
More interesting instances
A horse of a different color
Summary
SEE ALSO
COPYRIGHT
perltoot - Tom's object-oriented tutorial for perl
DESCRIPTION
Creating a Class
Object Representation
Class Interface
Constructors and Instance Methods
Planning for the Future: Better Constructors
Destructors
Other Object Methods
Class Data
Accessing Class Data
Debugging Methods
Class Destructors
Documenting the Interface
Aggregation
Inheritance
Overridden Methods
Multiple Inheritance
UNIVERSAL: The Root of All Objects
Alternate Object Representations
Arrays as Objects
Closures as Objects
AUTOLOAD: Proxy Methods
Autoloaded Data Methods
Inherited Autoloaded Data Methods
Metaclassical Tools
Class::Struct
Data Members as Variables
NOTES
Object Terminology
SEE ALSO
AUTHOR AND COPYRIGHT
COPYRIGHT
Acknowledgments
perltooc - Tom's OO Tutorial for Class Data in Perl
DESCRIPTION
Class Data in a Can
Class Data as Package Variables
Putting All Your Eggs in One Basket
Inheritance Concerns
The Eponymous Meta-Object
Indirect References to Class Data
Monadic Classes
Translucent Attributes
Class Data as Lexical Variables
Privacy and Responsibility
File-Scoped Lexicals
More Inheritance Concerns
Locking the Door and Throwing Away the Key
Translucency Revisited
NOTES
SEE ALSO
AUTHOR AND COPYRIGHT
ACKNOWLEDGEMENTS
HISTORY
perlbot - Bag'o Object Tricks (the BOT)
DESCRIPTION
OO SCALING TIPS
INSTANCE VARIABLES
SCALAR INSTANCE VARIABLES
INSTANCE VARIABLE INHERITANCE
OBJECT RELATIONSHIPS
OVERRIDING SUPERCLASS METHODS
USING RELATIONSHIP WITH SDBM
THINKING OF CODE REUSE
CLASS CONTEXT AND THE OBJECT
INHERITING A CONSTRUCTOR
DELEGATION
SEE ALSO
perlstyle - Perl style guide
DESCRIPTION
perlcheat - Perl 5 Cheat Sheet
DESCRIPTION
The sheet
ACKNOWLEDGEMENTS
AUTHOR
SEE ALSO
perltrap - Perl traps for the unwary
DESCRIPTION
Awk Traps
C/C++ Traps
Sed Traps
Shell Traps
Perl Traps
Perl4 to Perl5 Traps
Discontinuance, Deprecation, and BugFix traps, Parsing Traps,
Numerical Traps, General data type traps, Context Traps -
scalar, list contexts, Precedence Traps, General Regular
Expression Traps using s///, etc, Subroutine, Signal, Sorting
Traps, OS Traps, DBM Traps, Unclassified Traps
Discontinuance, Deprecation, and BugFix traps
Symbols starting with "_" no longer forced into main, Double-
colon valid package separator in variable name, 2nd and 3rd
args to "splice()" are now in scalar context, Can't do "goto"
into a block that is optimized away, Can't use whitespace as
variable name or quote delimiter, "while/if BLOCK BLOCK" gone,
"**" binds tighter than unary minus, "foreach" changed when
iterating over a list, "split" with no args behavior changed,
-e behavior fixed, "push" returns number of elements in result-
ing list, Some error messages differ, "split()" honors subrou-
tine args, Bugs removed
Parsing Traps
Space between . and = triggers syntax error, Better parsing in
perl 5, Function parsing, String interpolation of $#array dif-
fers, Perl guesses on "map", "grep" followed by "{" if it
starts BLOCK or hash ref
Numerical Traps
Formatted output and significant digits, Auto-increment opera-
tor over signed int limit deleted, Assignment of return values
from numeric equality tests doesn't work, Bitwise string ops
General data type traps
Negative array subscripts now count from the end of array, Set-
ting $#array lower now discards array elements, Hashes get
defined before use, Glob assignment from localized variable to
variable, Assigning "undef" to glob, Changes in unary negation
(of strings), Modifying of constants prohibited, "defined $var"
behavior changed, Variable Suicide
Context Traps - scalar, list contexts
Elements of argument lists for formats evaluated in list con-
text, "caller()" returns false value in scalar context if no
caller present, Comma operator in scalar context gives scalar
context to args, "sprintf()" prototyped as "($;@)"
Precedence Traps
LHS vs. RHS of any assignment operator, Semantic errors intro-
duced due to precedence, Precedence of assignment operators
same as the precedence of assignment, "open" requires parenthe-
ses around filehandle, $: precedence over $:: gone, Precedence
of file test operators documented, "keys", "each", "values" are
regular named unary operators
General Regular Expression Traps using s///, etc.
"s'$lhs'$rhs'" interpolates on either side, "m//g" attaches its
state to the searched string, "m//o" used within an anonymous
sub, $+ isn't set to whole match, Substitution now returns null
string if it fails, "s`lhs`rhs`" is now a normal substitution,
Stricter parsing of variables in regular expressions, "m?x?"
matches only once, Failed matches don't reset the match vari-
ables
Subroutine, Signal, Sorting Traps
Barewords that used to look like strings look like subroutine
calls, Reverse is no longer allowed as the name of a sort sub-
routine, "warn()" won't let you specify a filehandle
OS Traps
SysV resets signal handler correctly, SysV "seek()" appends
correctly
Interpolation Traps
"@" always interpolates an array in double-quotish strings,
Double-quoted strings may no longer end with an unescaped $,
Arbitrary expressions are evaluated inside braces within double
quotes, $$x now tries to dereference $x, Creation of hashes on
the fly with "eval "EXPR"" requires protection, Bugs in earlier
perl versions, Array and hash brackets during interpolation,
Interpolation of "\$$foo{bar}", "qq()" string passed to "eval"
will not find string terminator
DBM Traps
Perl5 must have been linked with same dbm/ndbm as the default
for "dbmopen()", DBM exceeding limit on the key/value size will
cause perl5 to exit immediately
Unclassified Traps
"require"/"do" trap using returned value, "split" on empty
string with LIMIT specified
perldebtut - Perl debugging tutorial
DESCRIPTION
use strict
Looking at data and -w and v
help
Stepping through code
Placeholder for a, w, t, T
REGULAR EXPRESSIONS
OUTPUT TIPS
CGI
GUIs
SUMMARY
SEE ALSO
AUTHOR
CONTRIBUTORS
perlfaq - frequently asked questions about Perl ($Date: 2005/03/27
07:21:21 $)
DESCRIPTION
Where to get the perlfaq
How to contribute to the perlfaq
What will happen if you mail your Perl programming problems to the
authors
Credits
Author and Copyright Information
Bundled Distributions
Disclaimer
Table of Contents
perlfaq - this document, perlfaq1 - General Questions About Perl,
perlfaq2 - Obtaining and Learning about Perl, perlfaq3 - Program-
ming Tools, perlfaq4 - Data Manipulation, perlfaq5 - Files and For-
mats, perlfaq6 - Regular Expressions, perlfaq7 - General Perl Lan-
guage Issues, perlfaq8 - System Interaction, perlfaq9 - Networking
The Questions
perlfaq1: General Questions About Perl
perlfaq2: Obtaining and Learning about Perl
perlfaq3: Programming Tools
perlfaq4: Data Manipulation
perlfaq5: Files and Formats
perlfaq6: Regular Expressions
perlfaq7: General Perl Language Issues
perlfaq8: System Interaction
perlfaq9: Networking
perlfaq1 - General Questions About Perl ($Revision: 1.17 $, $Date:
2005/01/31 15:52:15 $)
DESCRIPTION
What is Perl?
Who supports Perl? Who develops it? Why is it free?
Which version of Perl should I use?
What are perl4, perl5, or perl6?
What is Ponie?
What is perl6?
How stable is Perl?
Is Perl difficult to learn?
How does Perl compare with other languages like Java, Python, REXX,
Scheme, or Tcl?
Can I do [task] in Perl?
When shouldn't I program in Perl?
What's the difference between "perl" and "Perl"?
Is it a Perl program or a Perl script?
What is a JAPH?
Where can I get a list of Larry Wall witticisms?
How can I convince my sysadmin/supervisor/employees to use version
5/5.6.1/Perl instead of some other language?
AUTHOR AND COPYRIGHT
perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.31 $, $Date:
2005/01/31 15:54:44 $)
DESCRIPTION
What machines support Perl? Where do I get it?
How can I get a binary version of Perl?
I don't have a C compiler on my system. How can I compile perl?
I copied the Perl binary from one machine to another, but scripts
don't work.
I grabbed the sources and tried to compile but gdbm/dynamic load-
ing/malloc/linking/... failed. How do I make it work?
What modules and extensions are available for Perl? What is CPAN?
What does CPAN/src/... mean?
Is there an ISO or ANSI certified version of Perl?
Where can I get information on Perl?
What are the Perl newsgroups on Usenet? Where do I post questions?
Where should I post source code?
Perl Books
References, Tutorials, Task-Oriented, Special Topics
Perl in Magazines
Perl on the Net: FTP and WWW Access
What mailing lists are there for Perl?
Archives of comp.lang.perl.misc
Where can I buy a commercial version of Perl?
Where do I send bug reports?
What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
AUTHOR AND COPYRIGHT
perlfaq3 - Programming Tools ($Revision: 1.47 $, $Date: 2005/03/27
07:21:22 $)
DESCRIPTION
How do I do (anything)?
How can I use Perl interactively?
Is there a Perl shell?
How do I find which modules are installed on my system?
How do I debug my Perl programs?
How do I profile my Perl programs?
How do I cross-reference my Perl programs?
Is there a pretty-printer (formatter) for Perl?
Is there a ctags for Perl?
Is there an IDE or Windows Perl Editor?
Eclipse, Komodo, Open Perl IDE, OptiPerl, PerlBuilder,
visiPerl+, Visual Perl, GNU Emacs, MicroEMACS, XEmacs, Jed,
Elvis, Vile, Vim, Codewright, MultiEdit, SlickEdit, Bash, Ksh,
Tcsh, Zsh, Affrus, Alpha, BBEdit and BBEdit Lite
Where can I get Perl macros for vi?
Where can I get perl-mode for emacs?
How can I use curses with Perl?
How can I use X or Tk with Perl?
How can I make my Perl program run faster?
How can I make my Perl program take less memory?
Don't slurp!, Use map and grep selectively, Avoid unnecessary
quotes and stringification, Pass by reference, Tie large vari-
ables to disk
Is it safe to return a reference to local or lexical data?
How can I free an array or hash so my program shrinks?
How can I make my CGI script more efficient?
How can I hide the source for my Perl program?
How can I compile my Perl program into byte code or C?
How can I compile Perl into Java?
How can I get "#!perl" to work on [MS-DOS,NT,...]?
Can I write useful Perl programs on the command line?
Why don't Perl one-liners work on my DOS/Mac/VMS system?
Where can I learn about CGI or Web programming in Perl?
Where can I learn about object-oriented Perl programming?
Where can I learn about linking C with Perl? [h2xs, xsubpp]
I've read perlembed, perlguts, etc., but I can't embed perl in my C
program; what am I doing wrong?
When I tried to run my script, I got this message. What does it
mean?
What's MakeMaker?
AUTHOR AND COPYRIGHT
perlfaq4 - Data Manipulation ($Revision: 1.61 $, $Date: 2005/03/11
16:27:53 $)
DESCRIPTION
Data: Numbers
Why am I getting long decimals (eg, 19.9499999999999) instead of
the numbers I should be getting (eg, 19.95)?
Why is int() broken?
Why isn't my octal data interpreted correctly?
Does Perl have a round() function? What about ceil() and floor()?
Trig functions?
How do I convert between numeric representations/bases/radixes?
How do I convert hexadecimal into decimal, How do I convert
from decimal to hexadecimal, How do I convert from octal to
decimal, How do I convert from decimal to octal, How do I con-
vert from binary to decimal, How do I convert from decimal to
binary
Why doesn't & work the way I want it to?
How do I multiply matrices?
How do I perform an operation on a series of integers?
How can I output Roman numerals?
Why aren't my random numbers random?
How do I get a random number between X and Y?
Data: Dates
How do I find the day or week of the year?
How do I find the current century or millennium?
How can I compare two dates and find the difference?
How can I take a string and turn it into epoch seconds?
How can I find the Julian Day?
How do I find yesterday's date?
Does Perl have a Year 2000 problem? Is Perl Y2K compliant?
Data: Strings
How do I validate input?
How do I unescape a string?
How do I remove consecutive pairs of characters?
How do I expand function calls in a string?
How do I find matching/nesting anything?
How do I reverse a string?
How do I expand tabs in a string?
How do I reformat a paragraph?
How can I access or change N characters of a string?
How do I change the Nth occurrence of something?
How can I count the number of occurrences of a substring within a
string?
How do I capitalize all the words on one line?
How can I split a [character] delimited string except when inside
[character]?
How do I strip blank space from the beginning/end of a string?
How do I pad a string with blanks or pad a number with zeroes?
How do I extract selected columns from a string?
How do I find the soundex value of a string?
How can I expand variables in text strings?
What's wrong with always quoting "$vars"?
Why don't my <<HERE documents work?
There must be no space after the << part, There (probably)
should be a semicolon at the end, You can't (easily) have any
space in front of the tag
Data: Arrays
What is the difference between a list and an array?
What is the difference between $array[1] and @array[1]?
How can I remove duplicate elements from a list or array?
a), b), c), d), e)
How can I tell whether a certain element is contained in a list or
array?
How do I compute the difference of two arrays? How do I compute
the intersection of two arrays?
How do I test whether two arrays or hashes are equal?
How do I find the first array element for which a condition is
true?
How do I handle linked lists?
How do I handle circular lists?
How do I shuffle an array randomly?
How do I process/modify each element of an array?
How do I select a random element from an array?
How do I permute N elements of a list?
How do I sort an array by (anything)?
How do I manipulate arrays of bits?
Why does defined() return true on empty arrays and hashes?
Data: Hashes (Associative Arrays)
How do I process an entire hash?
What happens if I add or remove keys from a hash while iterating
over it?
How do I look up a hash element by value?
How can I know how many entries are in a hash?
How do I sort a hash (optionally by value instead of key)?
How can I always keep my hash sorted?
What's the difference between "delete" and "undef" with hashes?
Why don't my tied hashes make the defined/exists distinction?
How do I reset an each() operation part-way through?
How can I get the unique keys from two hashes?
How can I store a multidimensional array in a DBM file?
How can I make my hash remember the order I put elements into it?
Why does passing a subroutine an undefined element in a hash create
it?
How can I make the Perl equivalent of a C structure/C++ class/hash
or array of hashes or arrays?
How can I use a reference as a hash key?
Data: Misc
How do I handle binary data correctly?
How do I determine whether a scalar is a number/whole/inte-
ger/float?
How do I keep persistent data across program calls?
How do I print out or copy a recursive data structure?
How do I define methods for every class/object?
How do I verify a credit card checksum?
How do I pack arrays of doubles or floats for XS code?
AUTHOR AND COPYRIGHT
perlfaq5 - Files and Formats ($Revision: 1.35 $, $Date: 2005/01/21
12:26:11 $)
DESCRIPTION
How do I flush/unbuffer an output filehandle? Why must I do this?
How do I change one line in a file/delete a line in a file/insert a
line in the middle of a file/append to the beginning of a file?
How do I count the number of lines in a file?
How can I use Perl's "-i" option from within a program?
How can I copy a file?
How do I make a temporary file name?
How can I manipulate fixed-record-length files?
How can I make a filehandle local to a subroutine? How do I pass
filehandles between subroutines? How do I make an array of file-
handles?
How can I use a filehandle indirectly?
How can I set up a footer format to be used with write()?
How can I write() into a string?
How can I output my numbers with commas added?
How can I translate tildes (~) in a filename?
How come when I open a file read-write it wipes it out?
Why do I sometimes get an "Argument list too long" when I use <*>?
Is there a leak/bug in glob()?
How can I open a file with a leading ">" or trailing blanks?
How can I reliably rename a file?
How can I lock a file?
Why can't I just open(FH, ">file.lock")?
I still don't get locking. I just want to increment the number in
the file. How can I do this?
All I want to do is append a small amount of text to the end of a
file. Do I still have to use locking?
How do I randomly update a binary file?
How do I get a file's timestamp in perl?
How do I set a file's timestamp in perl?
How do I print to more than one file at once?
How can I read in an entire file all at once?
How can I read in a file by paragraphs?
How can I read a single character from a file? From the keyboard?
How can I tell whether there's a character waiting on a filehandle?
How do I do a "tail -f" in perl?
How do I dup() a filehandle in Perl?
How do I close a file descriptor by number?
Why can't I use "C:\temp\foo" in DOS paths? Why doesn't
`C:\temp\foo.exe` work?
Why doesn't glob("*.*") get all the files?
Why does Perl let me delete read-only files? Why does "-i" clobber
protected files? Isn't this a bug in Perl?
How do I select a random line from a file?
Why do I get weird spaces when I print an array of lines?
AUTHOR AND COPYRIGHT
perlfaq6 - Regular Expressions ($Revision: 1.31 $, $Date: 2005/03/27
07:17:28 $)
DESCRIPTION
How can I hope to use regular expressions without creating illegi-
ble and unmaintainable code?
Comments Outside the Regex, Comments Inside the Regex, Differ-
ent Delimiters
I'm having trouble matching over more than one line. What's wrong?
How can I pull out lines between two patterns that are themselves
on different lines?
I put a regular expression into $/ but it didn't work. What's
wrong?
How do I substitute case insensitively on the LHS while preserving
case on the RHS?
How can I make "\w" match national character sets?
How can I match a locale-smart version of "/[a-zA-Z]/"?
How can I quote a variable to use in a regex?
What is "/o" really for?
How do I use a regular expression to strip C style comments from a
file?
Can I use Perl regular expressions to match balanced text?
What does it mean that regexes are greedy? How can I get around
it?
How do I process each word on each line?
How can I print out a word-frequency or line-frequency summary?
How can I do approximate matching?
How do I efficiently match many regular expressions at once?
Why don't word-boundary searches with "\b" work for me?
Why does using $&, $`, or $' slow my program down?
Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
What's wrong with using grep in a void context?
How can I match strings with multibyte characters?
How do I match a pattern that is supplied by the user?
AUTHOR AND COPYRIGHT
perlfaq7 - General Perl Language Issues ($Revision: 1.22 $, $Date:
2005/03/27 07:19:01 $)
DESCRIPTION
Can I get a BNF/yacc/RE for the Perl language?
What are all these $@%&* punctuation signs, and how do I know when
to use them?
Do I always/never have to quote my strings or use semicolons and
commas?
How do I skip some return values?
How do I temporarily block warnings?
What's an extension?
Why do Perl operators have different precedence than C operators?
How do I declare/create a structure?
How do I create a module?
How do I create a class?
How can I tell if a variable is tainted?
What's a closure?
What is variable suicide and how can I prevent it?
How can I pass/return a {Function, FileHandle, Array, Hash, Method,
Regex}?
Passing Variables and Functions, Passing Filehandles, Passing
Regexes, Passing Methods
How do I create a static variable?
What's the difference between dynamic and lexical (static) scoping?
Between local() and my()?
How can I access a dynamic variable while a similarly named lexical
is in scope?
What's the difference between deep and shallow binding?
Why doesn't "my($foo) = <FILE>;" work right?
How do I redefine a builtin function, operator, or method?
What's the difference between calling a function as &foo and foo()?
How do I create a switch or case statement?
How can I catch accesses to undefined variables, functions, or
methods?
Why can't a method included in this same file be found?
How can I find out my current package?
How can I comment out a large block of perl code?
How do I clear a package?
How can I use a variable as a variable name?
What does "bad interpreter" mean?
AUTHOR AND COPYRIGHT
perlfaq8 - System Interaction ($Revision: 1.23 $, $Date: 2005/01/03
18:43:37 $)
DESCRIPTION
How do I find out which operating system I'm running under?
How come exec() doesn't return?
How do I do fancy stuff with the keyboard/screen/mouse?
Keyboard, Screen, Mouse
How do I print something out in color?
How do I read just one key without waiting for a return key?
How do I check whether input is ready on the keyboard?
How do I clear the screen?
How do I get the screen size?
How do I ask the user for a password?
How do I read and write the serial port?
lockfiles, open mode, end of line, flushing output, non-block-
ing input
How do I decode encrypted password files?
How do I start a process in the background?
STDIN, STDOUT, and STDERR are shared, Signals, Zombies
How do I trap control characters/signals?
How do I modify the shadow password file on a Unix system?
How do I set the time and date?
How can I sleep() or alarm() for under a second?
How can I measure time under a second?
How can I do an atexit() or setjmp()/longjmp()? (Exception han-
dling)
Why doesn't my sockets program work under System V (Solaris)? What
does the error message "Protocol not supported" mean?
How can I call my system's unique C functions from Perl?
Where do I get the include files to do ioctl() or syscall()?
Why do setuid perl scripts complain about kernel problems?
How can I open a pipe both to and from a command?
Why can't I get the output of a command with system()?
How can I capture STDERR from an external command?
Why doesn't open() return an error when a pipe open fails?
What's wrong with using backticks in a void context?
How can I call backticks without shell processing?
Why can't my script read from STDIN after I gave it EOF (^D on
Unix, ^Z on MS-DOS)?
How can I convert my shell script to perl?
Can I use perl to run a telnet or ftp session?
How can I write expect in Perl?
Is there a way to hide perl's command line from programs such as
"ps"?
I {changed directory, modified my environment} in a perl
script. How come the change disappeared when I exited the script?
How do I get my changes to be visible?
Unix
How do I close a process's filehandle without waiting for it to
complete?
How do I fork a daemon process?
How do I find out if I'm running interactively or not?
How do I timeout a slow event?
How do I set CPU limits?
How do I avoid zombies on a Unix system?
How do I use an SQL database?
How do I make a system() exit on control-C?
How do I open a file without blocking?
How do I tell the difference between errors from the shell and
perl?
How do I install a module from CPAN?
What's the difference between require and use?
How do I keep my own module/library directory?
How do I add the directory my program lives in to the mod-
ule/library search path?
How do I add a directory to my include path (@INC) at runtime?
What is socket.ph and where do I get it?
AUTHOR AND COPYRIGHT
perlfaq9 - Networking ($Revision: 1.19 $, $Date: 2005/01/21 12:14:12 $)
DESCRIPTION
What is the correct form of response from a CGI script?
My CGI script runs from the command line but not the browser. (500
Server Error)
How can I get better error messages from a CGI program?
How do I remove HTML from a string?
How do I extract URLs?
How do I download a file from the user's machine? How do I open a
file on another machine?
How do I make a pop-up menu in HTML?
How do I fetch an HTML file?
How do I automate an HTML form submission?
How do I decode or create those %-encodings on the web?
How do I redirect to another page?
How do I put a password on my web pages?
How do I edit my .htpasswd and .htgroup files with Perl?
How do I make sure users can't enter values into a form that cause
my CGI script to do bad things?
How do I parse a mail header?
How do I decode a CGI form?
How do I check a valid mail address?
How do I decode a MIME/BASE64 string?
How do I return the user's mail address?
How do I send mail?
How do I use MIME to make an attachment to a mail message?
How do I read mail?
How do I find out my hostname/domainname/IP address?
How do I fetch a news article or the active newsgroups?
How do I fetch/put an FTP file?
How can I do RPC in Perl?
AUTHOR AND COPYRIGHT
perlsyn - Perl syntax
DESCRIPTION
Declarations
Comments
Simple Statements
Truth and Falsehood
Statement Modifiers
Compound Statements
Loop Control
For Loops
Foreach Loops
Basic BLOCKs and Switch Statements
Goto
PODs: Embedded Documentation
Plain Old Comments (Not!)
perldata - Perl data types
DESCRIPTION
Variable names
Context
Scalar values
Scalar value constructors
List value constructors
Subscripts
Slices
Typeglobs and Filehandles
SEE ALSO
perlop - Perl operators and precedence
DESCRIPTION
Operator Precedence and Associativity
Terms and List Operators (Leftward)
The Arrow Operator
Auto-increment and Auto-decrement
Exponentiation
Symbolic Unary Operators
Binding Operators
Multiplicative Operators
Additive Operators
Shift Operators
Named Unary Operators
Relational Operators
Equality Operators
Bitwise And
Bitwise Or and Exclusive Or
C-style Logical And
C-style Logical Or
Range Operators
Conditional Operator
Assignment Operators
Comma Operator
List Operators (Rightward)
Logical Not
Logical And
Logical or and Exclusive Or
C Operators Missing From Perl
unary &, unary *, (TYPE)
Quote and Quote-like Operators
Regexp Quote-Like Operators
?PATTERN?, m/PATTERN/cgimosx, /PATTERN/cgimosx, q/STRING/,
'STRING', qq/STRING/, "STRING", qr/STRING/imosx, qx/STRING/,
`STRING`, qw/STRING/, s/PATTERN/REPLACEMENT/egimosx, tr/SEARCH-
LIST/REPLACEMENTLIST/cds, y/SEARCHLIST/REPLACEMENTLIST/cds,
<<EOF
Gory details of parsing quoted constructs
Finding the end, Removal of backslashes before delimiters,
Interpolation, "<<'EOF'", "m", "s", "tr///", "y///", ,
"q//", "", ``, "qq//", "qx//", "<file*glob>", "?RE?", "/RE/",
"m/RE/", "s/RE/foo/",, Interpolation of regular expressions,
Optimization of regular expressions
I/O Operators
Constant Folding
No-ops
Bitwise String Operators
Integer Arithmetic
Floating-point Arithmetic
Bigger Numbers
perlsub - Perl subroutines
SYNOPSIS
DESCRIPTION
Private Variables via my()
Persistent Private Variables
Temporary Values via local()
Lvalue subroutines
Lvalue subroutines are EXPERIMENTAL
Passing Symbol Table Entries (typeglobs)
When to Still Use local()
Pass by Reference
Prototypes
Constant Functions
Overriding Built-in Functions
Autoloading
Subroutine Attributes
SEE ALSO
perlfunc - Perl builtin functions
DESCRIPTION
Perl Functions by Category
Functions for SCALARs or strings, Regular expressions and pat-
tern matching, Numeric functions, Functions for real @ARRAYs,
Functions for list data, Functions for real %HASHes, Input and
output functions, Functions for fixed length data or records,
Functions for filehandles, files, or directories, Keywords
related to the control flow of your perl program, Keywords
related to scoping, Miscellaneous functions, Functions for pro-
cesses and process groups, Keywords related to perl modules,
Keywords related to classes and object-orientedness, Low-level
socket functions, System V interprocess communication func-
tions, Fetching user and group info, Fetching network info,
Time-related functions, Functions new in perl5, Functions obso-
leted in perl5
Portability
Alphabetical Listing of Perl Functions
-X FILEHANDLE, -X EXPR, -X, abs VALUE, abs, accept NEW-
SOCKET,GENERICSOCKET, alarm SECONDS, alarm, atan2 Y,X, bind
SOCKET,NAME, binmode FILEHANDLE, LAYER, binmode FILEHANDLE,
bless REF,CLASSNAME, bless REF, caller EXPR, caller, chdir
EXPR, chmod LIST, chomp VARIABLE, chomp( LIST ), chomp, chop
VARIABLE, chop( LIST ), chop, chown LIST, chr NUMBER, chr,
chroot FILENAME, chroot, close FILEHANDLE, close, closedir
DIRHANDLE, connect SOCKET,NAME, continue BLOCK, cos EXPR, cos,
crypt PLAINTEXT,SALT, dbmclose HASH, dbmopen HASH,DBNAME,MASK,
defined EXPR, defined, delete EXPR, die LIST, do BLOCK, do SUB-
ROUTINE(LIST), do EXPR, dump LABEL, dump, each HASH, eof FILE-
HANDLE, eof (), eof, eval EXPR, eval BLOCK, exec LIST, exec
PROGRAM LIST, exists EXPR, exit EXPR, exp EXPR, exp, fcntl
FILEHANDLE,FUNCTION,SCALAR, fileno FILEHANDLE, flock FILEHAN-
DLE,OPERATION, fork, format, formline PICTURE,LIST, getc FILE-
HANDLE, getc, getlogin, getpeername SOCKET, getpgrp PID, getp-
pid, getpriority WHICH,WHO, getpwnam NAME, getgrnam NAME, geth-
ostbyname NAME, getnetbyname NAME, getprotobyname NAME, getp-
wuid UID, getgrgid GID, getservbyname NAME,PROTO, gethostbyaddr
ADDR,ADDRTYPE, getnetbyaddr ADDR,ADDRTYPE, getprotobynumber
NUMBER, getservbyport PORT,PROTO, getpwent, getgrent, gethos-
tent, getnetent, getprotoent, getservent, setpwent, setgrent,
sethostent STAYOPEN, setnetent STAYOPEN, setprotoent STAYOPEN,
setservent STAYOPEN, endpwent, endgrent, endhostent, endnetent,
endprotoent, endservent, getsockname SOCKET, getsockopt
SOCKET,LEVEL,OPTNAME, glob EXPR, glob, gmtime EXPR, goto LABEL,
goto EXPR, goto &NAME, grep BLOCK LIST, grep EXPR,LIST, hex
EXPR, hex, import, index STR,SUBSTR,POSITION, index STR,SUBSTR,
int EXPR, int, ioctl FILEHANDLE,FUNCTION,SCALAR, join
EXPR,LIST, keys HASH, kill SIGNAL, LIST, last LABEL, last, lc
EXPR, lc, lcfirst EXPR, lcfirst, length EXPR, length, link OLD-
FILE,NEWFILE, listen SOCKET,QUEUESIZE, local EXPR, localtime
EXPR, localtime, lock THING, log EXPR, log, lstat EXPR, lstat,
m//, map BLOCK LIST, map EXPR,LIST, mkdir FILENAME,MASK, mkdir
FILENAME, msgctl ID,CMD,ARG, msgget KEY,FLAGS, msgrcv
ID,VAR,SIZE,TYPE,FLAGS, msgsnd ID,MSG,FLAGS, my EXPR, my TYPE
EXPR, my EXPR : ATTRS, my TYPE EXPR : ATTRS, next LABEL, next,
no Module VERSION LIST, no Module VERSION, no Module LIST, no
Module, oct EXPR, oct, open FILEHANDLE,EXPR, open FILEHAN-
DLE,MODE,EXPR, open FILEHANDLE,MODE,EXPR,LIST, open FILEHAN-
DLE,MODE,REFERENCE, open FILEHANDLE, opendir DIRHANDLE,EXPR,
ord EXPR, ord, our EXPR, our EXPR TYPE, our EXPR : ATTRS, our
TYPE EXPR : ATTRS, pack TEMPLATE,LIST, package NAMESPACE, pack-
age, pipe READHANDLE,WRITEHANDLE, pop ARRAY, pop, pos SCALAR,
pos, print FILEHANDLE LIST, print LIST, print, printf FILEHAN-
DLE FORMAT, LIST, printf FORMAT, LIST, prototype FUNCTION, push
ARRAY,LIST, q/STRING/, qq/STRING/, qr/STRING/, qx/STRING/,
qw/STRING/, quotemeta EXPR, quotemeta, rand EXPR, rand, read
FILEHANDLE,SCALAR,LENGTH,OFFSET, read FILEHANDLE,SCALAR,LENGTH,
readdir DIRHANDLE, readline EXPR, readlink EXPR, readlink,
readpipe EXPR, recv SOCKET,SCALAR,LENGTH,FLAGS, redo LABEL,
redo, ref EXPR, ref, rename OLDNAME,NEWNAME, require VERSION,
require EXPR, require, reset EXPR, reset, return EXPR, return,
reverse LIST, rewinddir DIRHANDLE, rindex STR,SUBSTR,POSITION,
rindex STR,SUBSTR, rmdir FILENAME, rmdir, s///, scalar EXPR,
seek FILEHANDLE,POSITION,WHENCE, seekdir DIRHANDLE,POS, select
FILEHANDLE, select, select RBITS,WBITS,EBITS,TIMEOUT, semctl
ID,SEMNUM,CMD,ARG, semget KEY,NSEMS,FLAGS, semop KEY,OPSTRING,
send SOCKET,MSG,FLAGS,TO, send SOCKET,MSG,FLAGS, setpgrp
PID,PGRP, setpriority WHICH,WHO,PRIORITY, setsockopt
SOCKET,LEVEL,OPTNAME,OPTVAL, shift ARRAY, shift, shmctl
ID,CMD,ARG, shmget KEY,SIZE,FLAGS, shmread ID,VAR,POS,SIZE,
shmwrite ID,STRING,POS,SIZE, shutdown SOCKET,HOW, sin EXPR,
sin, sleep EXPR, sleep, socket SOCKET,DOMAIN,TYPE,PROTOCOL,
socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL, sort SUBNAME
LIST, sort BLOCK LIST, sort LIST, splice ARRAY,OFF-
SET,LENGTH,LIST, splice ARRAY,OFFSET,LENGTH, splice ARRAY,OFF-
SET, splice ARRAY, split /PATTERN/,EXPR,LIMIT, split /PAT-
TERN/,EXPR, split /PATTERN/, split, sprintf FORMAT, LIST, for-
mat parameter index, flags, vector flag, (minimum) width, pre-
cision, or maximum width, size, order of arguments, sqrt EXPR,
sqrt, srand EXPR, srand, stat FILEHANDLE, stat EXPR, stat,
study SCALAR, study, sub NAME BLOCK, sub NAME (PROTO) BLOCK,
sub NAME : ATTRS BLOCK, sub NAME (PROTO) : ATTRS BLOCK, substr
EXPR,OFFSET,LENGTH,REPLACEMENT, substr EXPR,OFFSET,LENGTH, sub-
str EXPR,OFFSET, symlink OLDFILE,NEWFILE, syscall NUMBER, LIST,
sysopen FILEHANDLE,FILENAME,MODE, sysopen FILEHANDLE,FILE-
NAME,MODE,PERMS, sysread FILEHANDLE,SCALAR,LENGTH,OFFSET, sys-
read FILEHANDLE,SCALAR,LENGTH, sysseek FILEHANDLE,POSI-
TION,WHENCE, system LIST, system PROGRAM LIST, syswrite FILE-
HANDLE,SCALAR,LENGTH,OFFSET, syswrite FILEHANDLE,SCALAR,LENGTH,
syswrite FILEHANDLE,SCALAR, tell FILEHANDLE, tell, telldir
DIRHANDLE, tie VARIABLE,CLASSNAME,LIST, tied VARIABLE, time,
times, tr///, truncate FILEHANDLE,LENGTH, truncate EXPR,LENGTH,
uc EXPR, uc, ucfirst EXPR, ucfirst, umask EXPR, umask, undef
EXPR, undef, unlink LIST, unlink, unpack TEMPLATE,EXPR, untie
VARIABLE, unshift ARRAY,LIST, use Module VERSION LIST, use Mod-
ule VERSION, use Module LIST, use Module, use VERSION, utime
LIST, values HASH, vec EXPR,OFFSET,BITS, wait, waitpid
PID,FLAGS, wantarray, warn LIST, write FILEHANDLE, write EXPR,
write, y///
perlopentut - tutorial on opening things in Perl
DESCRIPTION
Open A la shell
Simple Opens
Indirect Filehandles
Pipe Opens
The Minus File
Mixing Reads and Writes
Filters
Open A la C
Permissions A la mode
Obscure Open Tricks
Re-Opening Files (dups)
Dispelling the Dweomer
Paths as Opens
Single Argument Open
Playing with STDIN and STDOUT
Other I/O Issues
Opening Non-File Files
Opening Named Pipes
Opening Sockets
Binary Files
File Locking
IO Layers
SEE ALSO
AUTHOR and COPYRIGHT
HISTORY
perlpacktut - tutorial on "pack" and "unpack"
DESCRIPTION
The Basic Principle
Packing Text
Packing Numbers
Integers
Unpacking a Stack Frame
How to Eat an Egg on a Net
Floating point Numbers
Exotic Templates
Bit Strings
Uuencoding
Doing Sums
Unicode
Another Portable Binary Encoding
Template Grouping
Lengths and Widths
String Lengths
Dynamic Templates
Counting Repetitions
Packing and Unpacking C Structures
The Alignment Pit
Alignment, Take 2
Alignment, Take 3
Pointers for How to Use Them
Pack Recipes
Funnies Section
Authors
perlpod - the Plain Old Documentation format
DESCRIPTION
Ordinary Paragraph
Verbatim Paragraph
Command Paragraph
"=head1 Heading Text", "=head2 Heading Text", "=head3 Heading
Text", "=head4 Heading Text", "=over indentlevel", "=item
stuff...", "=back", "=cut", "=pod", "=begin formatname", "=end
formatname", "=for formatname text...", "=encoding encoding-
name"
Formatting Codes
"I<text>" -- italic text, "B<text>" -- bold text, "C<code>" --
code text, "L<name>" -- a hyperlink, "E<escape>" -- a character
escape, "F<filename>" -- used for filenames, "S<text>" -- text
contains non-breaking spaces, "X<topic name>" -- an index
entry, "Z<>" -- a null (zero-effect) formatting code
The Intent
Embedding Pods in Perl Modules
Hints for Writing Pod
SEE ALSO
AUTHOR
perlpodspec - Plain Old Documentation: format specification and notes
DESCRIPTION
Pod Definitions
Pod Commands
"=head1", "=head2", "=head3", "=head4", "=pod", "=cut", "=over",
"=item", "=back", "=begin formatname", "=end formatname", "=for
formatname text...", "=encoding encodingname"
Pod Formatting Codes
"I<text>" -- italic text, "B<text>" -- bold text, "C<code>" -- code
text, "F<filename>" -- style for filenames, "X<topic name>" -- an
index entry, "Z<>" -- a null (zero-effect) formatting code,
"L<name>" -- a hyperlink, "E<escape>" -- a character escape,
"S<text>" -- text contains non-breaking spaces
Notes on Implementing Pod Processors
About L<...> Codes
First:, Second:, Third:, Fourth:, Fifth:, Sixth:
About =over...=back Regions
About Data Paragraphs and "=begin/=end" Regions
SEE ALSO
AUTHOR
perlrun - how to execute the Perl interpreter
SYNOPSIS
DESCRIPTION
#! and quoting on non-Unix systems
OS/2, MS-DOS, Win95/NT, Macintosh, VMS
Location of Perl
Command Switches
-0[octal/hexadecimal], -a, -C [number/list], -c, -d, -dt,
-d:foo[=bar,baz], -dt:foo[=bar,baz], -Dletters, -Dnumber, -e
commandline, -f, -Fpattern, -h, -i[extension], -Idirectory,
-l[octnum], -m[-]module, -M[-]module, -M[-]'module ...',
-[mM][-]module=arg[,arg]..., -n, -p, -P, -s, -S, -t, -T, -u,
-U, -v, -V, -V:configvar, -w, -W, -X, -x, -x directory
ENVIRONMENT
HOME, LOGDIR, PATH, PERL5LIB, PERL5OPT, PERLIO, :bytes, :crlf,
:mmap, :perlio, :pop, :raw, :stdio, :unix, :utf8, :win32, PER-
LIO_DEBUG, PERLLIB, PERL5DB, PERL5DB_THREADED, PERL5SHELL (specific
to the Win32 port), PERL_ALLOW_NON_IFS_LSP (specific to the Win32
port), PERL_DEBUG_MSTATS, PERL_DESTRUCT_LEVEL, PERL_DL_NONLAZY,
PERL_ENCODING, PERL_HASH_SEED, PERL_HASH_SEED_DEBUG, PERL_ROOT
(specific to the VMS port), PERL_SIGNALS, PERL_UNICODE, SYS$LOGIN
(specific to the VMS port)
perldiag - various Perl diagnostics
DESCRIPTION
perllexwarn - Perl Lexical Warnings
DESCRIPTION
Default Warnings and Optional Warnings
What's wrong with -w and $^W
Controlling Warnings from the Command Line
-w, -W, -X
Backward Compatibility
Category Hierarchy
Fatal Warnings
Reporting Warnings from a Module
TODO
SEE ALSO
AUTHOR
perldebug - Perl debugging
DESCRIPTION
The Perl Debugger
Debugger Commands
h, h [command], h h, p expr, x [maxdepth] expr, V [pkg [vars]],
X [vars], y [level [vars]], T, s [expr], n [expr], r, <CR>, c
[line|sub], l, l min+incr, l min-max, l line, l subname, -, v
[line], f filename, /pattern/, ?pattern?, L [abw], S
[[!]regex], t, t expr, b, b [line] [condition], b subname [con-
dition], b postpone subname [condition], b load filename, b
compile subname, B line, B *, a [line] command, A line, A *, w
expr, W expr, W *, o, o booloption .., o anyoption? .., o
option=value .., < ?, < [ command ], < *, << command, > ?, >
command, > *, >> command, { ?, { [ command ], { *, {{ command,
! number, ! -number, ! pattern, !! cmd, source file, H -number,
q or ^D, R, |dbcmd, ||dbcmd, command, m expr, M, man [manpage]
Configurable Options
"recallCommand", "ShellBang", "pager", "tkRunning", "signal-
Level", "warnLevel", "dieLevel", "AutoTrace", "LineInfo",
"inhibit_exit", "PrintRet", "ornaments", "frame", "maxTrace-
Len", "windowSize", "arrayDepth", "hashDepth", "dumpDepth",
"compactDump", "veryCompact", "globPrint", "DumpDBFiles",
"DumpPackages", "DumpReused", "quote", "HighBit", "undefPrint",
"UsageOnly", "TTY", "noTTY", "ReadLine", "NonStop"
Debugger input/output
Prompt, Multiline commands, Stack backtrace, Line Listing For-
mat, Frame listing
Debugging compile-time statements
Debugger Customization
Readline Support
Editor Support for Debugging
The Perl Profiler
Debugging regular expressions
Debugging memory usage
SEE ALSO
BUGS
perlvar - Perl predefined variables
DESCRIPTION
Predefined Names
$ARG, $_, $a, $b, $<digits>, $MATCH, $&, $PREMATCH, $`, $POST-
MATCH, $', $LAST_PAREN_MATCH, $+, $^N, @LAST_MATCH_END, @+, $*,
HANDLE->input_line_number(EXPR), $INPUT_LINE_NUMBER, $NR, $,
IO::Handle->input_record_separator(EXPR), $INPUT_RECORD_SEPARA-
TOR, $RS, $/, HANDLE->autoflush(EXPR), $OUTPUT_AUTOFLUSH, $|,
IO::Handle->output_field_separator EXPR, $OUTPUT_FIELD_SEPARA-
TOR, $OFS, $,, IO::Handle->output_record_separator EXPR, $OUT-
PUT_RECORD_SEPARATOR, $ORS, $\, $LIST_SEPARATOR, $", $SUB-
SCRIPT_SEPARATOR, $SUBSEP, $;, $#, HANDLE->format_page_num-
ber(EXPR), $FORMAT_PAGE_NUMBER, $%, HANDLE->for-
mat_lines_per_page(EXPR), $FORMAT_LINES_PER_PAGE, $=, HAN-
DLE->format_lines_left(EXPR), $FORMAT_LINES_LEFT, $-,
@LAST_MATCH_START, @-, $` is the same as "substr($var, 0,
$-[0])", $& is the same as "substr($var, $-[0], $+[0] -
$-[0])", $' is the same as "substr($var, $+[0])", $1 is the
same as "substr($var, $-[1], $+[1] - $-[1])", $2 is the same as
"substr($var, $-[2], $+[2] - $-[2])", $3 is the same as "substr
$var, $-[3], $+[3] - $-[3])", HANDLE->format_name(EXPR), $FOR-
MAT_NAME, $~, HANDLE->format_top_name(EXPR), $FORMAT_TOP_NAME,
$^, IO::Handle->format_line_break_characters EXPR, $FOR-
MAT_LINE_BREAK_CHARACTERS, $:, IO::Handle->format_formfeed
EXPR, $FORMAT_FORMFEED, $^L, $ACCUMULATOR, $^A, $CHILD_ERROR,
$?, ${^ENCODING}, $OS_ERROR, $ERRNO, $!, %!,
$EXTENDED_OS_ERROR, $^E, $EVAL_ERROR, $@, $PROCESS_ID, $PID,
$$, $REAL_USER_ID, $UID, $<, $EFFECTIVE_USER_ID, $EUID, $>,
$REAL_GROUP_ID, $GID, $(, $EFFECTIVE_GROUP_ID, $EGID, $), $PRO-
GRAM_NAME, $0, $[, $], $COMPILING, $^C, $DEBUGGING, $^D, $SYS-
TEM_FD_MAX, $^F, $^H, %^H, $INPLACE_EDIT, $^I, $^M, $OSNAME,
$^O, ${^OPEN}, $PERLDB, $^P, 0x01, 0x02, 0x04, 0x08, 0x10,
0x20, 0x40, 0x80, 0x100, 0x200, 0x400, $LAST_REG-
EXP_CODE_RESULT, $^R, $EXCEPTIONS_BEING_CAUGHT, $^S, $BASETIME,
$^T, ${^TAINT}, ${^UNICODE}, $PERL_VERSION, $^V, $WARNING, $^W,
${^WARNING_BITS}, $EXECUTABLE_NAME, $^X, ARGV, $ARGV, @ARGV,
ARGVOUT, @F, @INC, @_, %INC, %ENV, $ENV{expr}, %SIG, $SIG{expr}
Error Indicators
Technical Note on the Syntax of Variable Names
BUGS
perlre - Perl regular expressions
DESCRIPTION
i, m, s, x
Regular Expressions
[1], [2], [3], cntrl, graph, print, punct, xdigit
Extended Patterns
"(?#text)", "(?imsx-imsx)", "(?:pattern)", "(?imsx-imsx:pat-
tern)", "(?=pattern)", "(?!pattern)", "(?<=pattern)", "(?<!pat-
tern)", "(?{ code })", "(??{ code })", "(?>pattern)", "(?(con-
dition)yes-pattern|no-pattern)", "(?(condition)yes-pattern)"
Backtracking
Version 8 Regular Expressions
Warning on \1 vs $1
Repeated patterns matching zero-length substring
Combining pieces together
"ST", "S|T", "S{REPEAT_COUNT}", "S{min,max}", "S{min,max}?",
"S?", "S*", "S+", "S??", "S*?", "S+?", "(?>S)", "(?=S)",
"(?<=S)", "(?!S)", "(?<!S)", "(??{ EXPR })", "(?(condi-
tion)yes-pattern|no-pattern)"
Creating custom RE engines
BUGS
SEE ALSO
perlreref - Perl Regular Expressions Reference
DESCRIPTION
OPERATORS
SYNTAX
ESCAPE SEQUENCES
CHARACTER CLASSES
ANCHORS
QUANTIFIERS
EXTENDED CONSTRUCTS
VARIABLES
FUNCTIONS
TERMINOLOGY
AUTHOR
SEE ALSO
THANKS
perlref - Perl references and nested data structures
NOTE
DESCRIPTION
Making References
Using References
Symbolic references
Not-so-symbolic references
Pseudo-hashes: Using an array as a hash
Function Templates
WARNING
SEE ALSO
perlform - Perl formats
DESCRIPTION
Text Fields
Numeric Fields
The Field @* for Variable Width Multi-Line Text
The Field ^* for Variable Width One-line-at-a-time Text
Specifying Values
Using Fill Mode
Suppressing Lines Where All Fields Are Void
Repeating Format Lines
Top of Form Processing
Format Variables
NOTES
Footers
Accessing Formatting Internals
WARNINGS
perlobj - Perl objects
DESCRIPTION
An Object is Simply a Reference
A Class is Simply a Package
A Method is Simply a Subroutine
Method Invocation
Indirect Object Syntax
Default UNIVERSAL methods
isa(CLASS), can(METHOD), VERSION( [NEED] )
Destructors
Summary
Two-Phased Garbage Collection
SEE ALSO
perltie - how to hide an object class in a simple variable
SYNOPSIS
DESCRIPTION
Tying Scalars
TIESCALAR classname, LIST, FETCH this, STORE this, value, UNTIE
this, DESTROY this
Tying Arrays
TIEARRAY classname, LIST, FETCH this, index, STORE this, index,
value, FETCHSIZE this, STORESIZE this, count, EXTEND this,
count, EXISTS this, key, DELETE this, key, CLEAR this, PUSH
this, LIST, POP this, SHIFT this, UNSHIFT this, LIST, SPLICE
this, offset, length, LIST, UNTIE this, DESTROY this
Tying Hashes
USER, HOME, CLOBBER, LIST, TIEHASH classname, LIST, FETCH this,
key, STORE this, key, value, DELETE this, key, CLEAR this,
EXISTS this, key, FIRSTKEY this, NEXTKEY this, lastkey, SCALAR
this, UNTIE this, DESTROY this
Tying FileHandles
TIEHANDLE classname, LIST, WRITE this, LIST, PRINT this, LIST,
PRINTF this, LIST, READ this, LIST, READLINE this, GETC this,
CLOSE this, UNTIE this, DESTROY this
UNTIE this
The "untie" Gotcha
SEE ALSO
BUGS
AUTHOR
perldbmfilter - Perl DBM Filters
SYNOPSIS
DESCRIPTION
filter_store_key, filter_store_value, filter_fetch_key, fil-
ter_fetch_value
The Filter
An Example -- the NULL termination problem.
Another Example -- Key is a C int.
SEE ALSO
AUTHOR
perlipc - Perl interprocess communication (signals, fifos, pipes, safe
subprocesses, sockets, and semaphores)
DESCRIPTION
Signals
Handling the SIGHUP Signal in Daemons
Named Pipes
Deferred Signals (Safe Signals)
Long running opcodes, Interrupting IO, Restartable system
calls, Signals as "faults", Signals triggered by operating sys-
tem state
Using open() for IPC
Filehandles
Background Processes
Complete Dissociation of Child from Parent
Safe Pipe Opens
Bidirectional Communication with Another Process
Bidirectional Communication with Yourself
Sockets: Client/Server Communication
Internet Line Terminators
Internet TCP Clients and Servers
Unix-Domain TCP Clients and Servers
TCP Clients with IO::Socket
A Simple Client
"Proto", "PeerAddr", "PeerPort"
A Webget Client
Interactive Client with IO::Socket
TCP Servers with IO::Socket
Proto, LocalPort, Listen, Reuse
UDP: Message Passing
SysV IPC
NOTES
BUGS
AUTHOR
SEE ALSO
perlfork - Perl's fork() emulation
SYNOPSIS
DESCRIPTION
Behavior of other Perl features in forked pseudo-processes
$$ or $PROCESS_ID, %ENV, chdir() and all other builtins that
accept filenames, wait() and waitpid(), kill(), exec(), exit(),
Open handles to files, directories and network sockets
Resource limits
Killing the parent process
Lifetime of the parent process and pseudo-processes
CAVEATS AND LIMITATIONS
BEGIN blocks, Open filehandles, Forking pipe open() not yet
implemented, Global state maintained by XSUBs, Interpreter
embedded in larger application, Thread-safety of extensions
BUGS
AUTHOR
SEE ALSO
perlnumber - semantics of numbers and numeric operations in Perl
SYNOPSIS
DESCRIPTION
Storing numbers
Numeric operators and numeric conversions
Flavors of Perl numeric operations
Arithmetic operators, ++, Arithmetic operators during "use inte-
ger", Other mathematical operators, Bitwise operators, Bitwise
operators during "use integer", Operators which expect an integer,
Operators which expect a string
AUTHOR
SEE ALSO
perlthrtut - tutorial on threads in Perl
DESCRIPTION
Status
What Is A Thread Anyway?
Threaded Program Models
Boss/Worker
Work Crew
Pipeline
What kind of threads are Perl threads?
Thread-Safe Modules
Thread Basics
Basic Thread Support
A Note about the Examples
Creating Threads
Waiting For A Thread To Exit
Ignoring A Thread
Threads And Data
Shared And Unshared Data
Thread Pitfalls: Races
Synchronization and control
Controlling access: lock()
A Thread Pitfall: Deadlocks
Queues: Passing Data Around
Semaphores: Synchronizing Data Access
Basic semaphores
Advanced Semaphores
cond_wait() and cond_signal()
Giving up control
General Thread Utility Routines
What Thread Am I In?
Thread IDs
Are These Threads The Same?
What Threads Are Running?
A Complete Example
Different implementations of threads
Performance considerations
Process-scope Changes
Thread-Safety of System Libraries
Conclusion
Bibliography
Introductory Texts
OS-Related References
Other References
Acknowledgements
AUTHOR
Copyrights
perlothrtut - old tutorial on threads in Perl
DESCRIPTION
What Is A Thread Anyway?
Threaded Program Models
Boss/Worker
Work Crew
Pipeline
Native threads
What kind of threads are perl threads?
Threadsafe Modules
Thread Basics
Basic Thread Support
Creating Threads
Giving up control
Waiting For A Thread To Exit
Errors In Threads
Ignoring A Thread
Threads And Data
Shared And Unshared Data
Thread Pitfall: Races
Controlling access: lock()
Thread Pitfall: Deadlocks
Queues: Passing Data Around
Threads And Code
Semaphores: Synchronizing Data Access
Basic semaphores, Advanced Semaphores
Attributes: Restricting Access To Subroutines
Subroutine Locks
Methods
Locking A Subroutine
General Thread Utility Routines
What Thread Am I In?
Thread IDs
Are These Threads The Same?
What Threads Are Running?
A Complete Example
Conclusion
Bibliography
Introductory Texts
OS-Related References
Other References
Acknowledgements
AUTHOR
Copyrights
perlport - Writing portable Perl
DESCRIPTION
Not all Perl programs have to be portable, Nearly all of Perl
already is portable
ISSUES
Newlines
Numbers endianness and Width
Files and Filesystems
System Interaction
Command names versus file pathnames
Networking
Interprocess Communication (IPC)
External Subroutines (XS)
Standard Modules
Time and Date
Character sets and character encoding
Internationalisation
System Resources
Security
Style
CPAN Testers
PLATFORMS
Unix
DOS and Derivatives
Mac OS
VMS
VOS
EBCDIC Platforms
Acorn RISC OS
Other perls
FUNCTION IMPLEMENTATIONS
Alphabetical Listing of Perl Functions
-X, atan2, binmode, chmod, chown, chroot, crypt, dbmclose,
dbmopen, dump, exec, exit, fcntl, flock, fork, getlogin,
getpgrp, getppid, getpriority, getpwnam, getgrnam, getnetby-
name, getpwuid, getgrgid, getnetbyaddr, getprotobynumber, get-
servbyport, getpwent, getgrent, gethostbyname, gethostent, get-
netent, getprotoent, getservent, sethostent, setnetent, setpro-
toent, setservent, endpwent, endgrent, endhostent, endnetent,
endprotoent, endservent, getsockopt SOCKET,LEVEL,OPTNAME, glob,
gmtime, ioctl FILEHANDLE,FUNCTION,SCALAR, kill, link, local-
time, lstat, msgctl, msgget, msgsnd, msgrcv, open, pipe, read-
link, rename, select, semctl, semget, semop, setgrent, setpgrp,
setpriority, setpwent, setsockopt, shmctl, shmget, shmread,
shmwrite, sockatmark, socketpair, stat, symlink, syscall,
sysopen, system, times, truncate, umask, utime, wait, waitpid
Supported Platforms
SEE ALSO
AUTHORS / CONTRIBUTORS
perllocale - Perl locale handling (internationalization and localiza-
tion)
DESCRIPTION
PREPARING TO USE LOCALES
USING LOCALES
The use locale pragma
The setlocale function
Finding locales
LOCALE PROBLEMS
Temporarily fixing locale problems
Permanently fixing locale problems
Permanently fixing your system's locale configuration
Fixing system locale configuration
The localeconv function
I18N::Langinfo
LOCALE CATEGORIES
Category LC_COLLATE: Collation
Category LC_CTYPE: Character Types
Category LC_NUMERIC: Numeric Formatting
Category LC_MONETARY: Formatting of monetary amounts
LC_TIME
Other categories
SECURITY
ENVIRONMENT
PERL_BADLANG, LC_ALL, LANGUAGE, LC_CTYPE, LC_COLLATE, LC_MONETARY,
LC_NUMERIC, LC_TIME, LANG
NOTES
Backward compatibility
I18N:Collate obsolete
Sort speed and memory use impacts
write() and LC_NUMERIC
Freely available locale definitions
I18n and l10n
An imperfect standard
Unicode and UTF-8
BUGS
Broken systems
SEE ALSO
HISTORY
perluniintro - Perl Unicode introduction
DESCRIPTION
Unicode
Perl's Unicode Support
Perl's Unicode Model
Unicode and EBCDIC
Creating Unicode
Handling Unicode
Legacy Encodings
Unicode I/O
Displaying Unicode As Text
Special Cases
Advanced Topics
Miscellaneous
Questions With Answers
Hexadecimal Notation
Further Resources
UNICODE IN OLDER PERLS
SEE ALSO
ACKNOWLEDGMENTS
AUTHOR, COPYRIGHT, AND LICENSE
perlunicode - Unicode support in Perl
DESCRIPTION
Important Caveats
Input and Output Layers, Regular Expressions, "use utf8" still
needed to enable UTF-8/UTF-EBCDIC in scripts, BOM-marked
scripts and UTF-16 scripts autodetected, "use encoding" needed
to upgrade non-Latin-1 byte strings
Byte and Character Semantics
Effects of Character Semantics
Scripts
Blocks
User-Defined Character Properties
Character Encodings for Input and Output
Unicode Regular Expression Support Level
Unicode Encodings
Security Implications of Unicode
Unicode in Perl on EBCDIC
Locales
When Unicode Does Not Happen
Forcing Unicode in Perl (Or Unforcing Unicode in Perl)
Using Unicode in XS
BUGS
Interaction with Locales
Interaction with Extensions
Speed
Porting code from perl-5.6.X
SEE ALSO
perlebcdic - Considerations for running Perl on EBCDIC platforms
DESCRIPTION
COMMON CHARACTER CODE SETS
ASCII
ISO 8859
Latin 1 (ISO 8859-1)
EBCDIC
13 variant characters
0037
1047
POSIX-BC
Unicode code points versus EBCDIC code points
Remaining Perl Unicode problems in EBCDIC
Unicode and UTF
Using Encode
SINGLE OCTET TABLES
recipe 0, recipe 1, recipe 2, recipe 3, recipe 4, recipe 5, recipe
6
IDENTIFYING CHARACTER CODE SETS
CONVERSIONS
tr///
iconv
C RTL
OPERATOR DIFFERENCES
FUNCTION DIFFERENCES
chr(), ord(), pack(), print(), printf(), sort(), sprintf(),
unpack()
REGULAR EXPRESSION DIFFERENCES
SOCKETS
SORTING
Ignore ASCII vs. EBCDIC sort differences.
MONO CASE then sort data.
Convert, sort data, then re convert.
Perform sorting on one type of machine only.
TRANSFORMATION FORMATS
URL decoding and encoding
uu encoding and decoding
Quoted-Printable encoding and decoding
Caesarian ciphers
Hashing order and checksums
I18N AND L10N
MULTI OCTET CHARACTER SETS
OS ISSUES
OS/400
PASE, IFS access
OS/390, z/OS
chcp, dataset access, OS/390, z/OS iconv, locales
VM/ESA?
POSIX-BC?
BUGS
SEE ALSO
REFERENCES
HISTORY
AUTHOR
perlsec - Perl security
DESCRIPTION
Laundering and Detecting Tainted Data
Switches On the "#!" Line
Taint mode and @INC
Cleaning Up Your Path
Security Bugs
Protecting Your Programs
Unicode
Algorithmic Complexity Attacks
SEE ALSO
perlmod - Perl modules (packages and symbol tables)
DESCRIPTION
Packages
Symbol Tables
BEGIN, CHECK, INIT and END
Perl Classes
Perl Modules
Making your module threadsafe
SEE ALSO
perlmodlib - constructing new Perl modules and finding existing ones
THE PERL MODULE LIBRARY
Pragmatic Modules
attributes, attrs, autouse, base, bigint, bignum, bigrat, blib,
bytes, charnames, constant, diagnostics, encoding, fields,
filetest, if, integer, less, lib, locale, open, ops, overload,
re, sigtrap, sort, strict, subs, threads, threads::shared,
utf8, vars, vmsish, warnings, warnings::register
Standard Modules
AnyDBM_File, Attribute::Handlers, AutoLoader, AutoSplit, B,
B::Asmdata, B::Assembler, B::Bblock, B::Bytecode, B::C, B::CC,
B::Concise, B::Debug, B::Deparse, B::Disassembler, B::Lint,
B::Showlex, B::Stackobj, B::Stash, B::Terse, B::Xref, Bench-
mark, ByteLoader, CGI, CGI::Apache, CGI::Carp, CGI::Cookie,
CGI::Fast, CGI::Pretty, CGI::Push, CGI::Switch, CGI::Util,
CPAN, CPAN::FirstTime, CPAN::Nox, Carp, Carp::Heavy,
Class::ISA, Class::Struct, Config, Cwd, DB, DB_File,
Data::Dumper, Devel::DProf, Devel::PPPort, Devel::Peek,
Devel::SelfStubber, Digest, Digest::MD5, Digest::base, DirHan-
dle, Dumpvalue, DynaLoader, Encode, Encode::Alias,
Encode::Byte, Encode::CJKConstants, Encode::CN, Encode::CN::HZ,
Encode::Config, Encode::EBCDIC, Encode::Encoder, Encode::Encod-
ing, Encode::Guess, Encode::JP, Encode::JP::H2Z,
Encode::JP::JIS7, Encode::KR, Encode::KR::2022_KR,
Encode::MIME::Header, Encode::PerlIO, Encode::Supported,
Encode::Symbol, Encode::TW, Encode::Unicode, Encode::Uni-
code::UTF7, English, Env, Errno, Exporter, Exporter::Heavy,
ExtUtils::Command, ExtUtils::Command::MM, ExtUtils::Constant,
ExtUtils::Embed, ExtUtils::Install, ExtUtils::Installed, ExtU-
tils::Liblist, ExtUtils::MM, ExtUtils::MM_Any, ExtU-
tils::MM_BeOS, ExtUtils::MM_Cygwin, ExtUtils::MM_DOS, ExtU-
tils::MM_MacOS, ExtUtils::MM_NW5, ExtUtils::MM_OS2, ExtU-
tils::MM_UWIN, ExtUtils::MM_Unix, ExtUtils::MM_VMS, ExtU-
tils::MM_Win32, ExtUtils::MM_Win95, ExtUtils::MY, ExtU-
tils::MakeMaker, ExtUtils::MakeMaker::FAQ, ExtUtils::Make-
Maker::Tutorial, ExtUtils::MakeMaker::bytes, ExtUtils::Make-
Maker::vmsish, ExtUtils::Manifest, ExtUtils::Mkbootstrap, ExtU-
tils::Mksymlists, ExtUtils::Packlist, ExtUtils::testlib, Fatal,
Fcntl, File::Basename, File::CheckTree, File::Compare,
File::Copy, File::DosGlob, File::Find, File::Glob, File::Path,
File::Spec, File::Spec::Cygwin, File::Spec::Epoc,
File::Spec::Functions, File::Spec::Mac, File::Spec::OS2,
File::Spec::Unix, File::Spec::VMS, File::Spec::Win32,
File::Temp, File::stat, FileCache, FileHandle, Filter::Simple,
Filter::Util::Call, FindBin, GDBM_File, Getopt::Long,
Getopt::Std, Hash::Util, I18N::Collate, I18N::LangTags,
I18N::LangTags::List, I18N::Langinfo, IO, IO::Dir, IO::File,
IO::Handle, IO::Pipe, IO::Poll, IO::Seekable, IO::Select,
IO::Socket, IO::Socket::INET, IO::Socket::UNIX, IPC::Open2,
IPC::Open3, IPC::SysV, IPC::SysV::Msg, IPC::SysV::Semaphore,
List::Util, Locale::Constants, Locale::Country, Locale::Cur-
rency, Locale::Language, Locale::Maketext, Locale::Make-
text::TPJ13, Locale::Script, MIME::Base64, MIME::Base64::Quot-
edPrint, Math::BigFloat, Math::BigInt, Math::BigInt::Calc,
Math::BigRat, Math::Complex, Math::Trig, Memoize, Memoize::Any-
DBM_File, Memoize::Expire, Memoize::ExpireFile, Memo-
ize::ExpireTest, Memoize::NDBM_File, Memoize::SDBM_File, Memo-
ize::Storable, NDBM_File, NEXT, Net::Cmd, Net::Config,
Net::Domain, Net::FTP, Net::NNTP, Net::Netrc, Net::POP3,
Net::Ping, Net::SMTP, Net::Time, Net::hostent, Net::libnetFAQ,
Net::netent, Net::protoent, Net::servent, O, ODBM_File, Opcode,
POSIX, PerlIO, PerlIO::encoding, PerlIO::scalar, PerlIO::via,
PerlIO::via::QuotedPrint, Pod::Checker, Pod::Find, Pod::Func-
tions, Pod::Html, Pod::InputObjects, Pod::LaTeX, Pod::Man,
Pod::ParseLink, Pod::ParseUtils, Pod::Parser, Pod::Perl-
doc::ToChecker, Pod::Perldoc::ToMan, Pod::Perldoc::ToNroff,
Pod::Perldoc::ToPod, Pod::Perldoc::ToRtf, Pod::Perldoc::ToText,
Pod::Perldoc::ToTk, Pod::Perldoc::ToXml, Pod::PlainText,
Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color,
Pod::Text::Overstrike, Pod::Text::Termcap, Pod::Usage,
SDBM_File, Safe, Scalar::Util, Search::Dict, SelectSaver, Self-
Loader, Shell, Socket, Storable, Switch, Symbol, Sys::Hostname,
Sys::Syslog, Term::ANSIColor, Term::Cap, Term::Complete,
Term::ReadLine, Test, Test::Builder, Test::Harness, Test::Har-
ness::Assert, Test::Harness::Iterator, Test::Harness::Straps,
Test::More, Test::Simple, Test::Tutorial, Text::Abbrev,
Text::Balanced, Text::ParseWords, Text::Soundex, Text::Tabs,
Text::Wrap, Thread, Thread::Queue, Thread::Semaphore,
Thread::Signal, Thread::Specific, Tie::Array, Tie::File,
Tie::Handle, Tie::Hash, Tie::Memoize, Tie::RefHash,
Tie::Scalar, Tie::SubstrHash, Time::HiRes, Time::Local,
Time::gmtime, Time::localtime, Time::tm, UNIVERSAL, Uni-
code::Collate, Unicode::Normalize, Unicode::UCD, User::grent,
User::pwent, Win32, XS::APItest, XS::Typemap, XSLoader
Extension Modules
CPAN
Africa
South Africa
Asia
China, Indonesia, Israel, Japan, Malaysia, Russian Federation,
Saudi Arabia, Singapore, South Korea, Taiwan, Thailand
Central America
Costa Rica
Europe
Austria, Belgium, Bosnia and Herzegovina, Bulgaria, Croatia,
Czech Republic, Denmark, Estonia, Finland, France, Germany,
Greece, Hungary, Iceland, Ireland, Italy, Latvia, Lithuania,
Netherlands, Norway, Poland, Portugal, Romania, Russia, Slo-
vakia, Slovenia, Spain, Sweden, Switzerland, Turkey, Ukraine,
United Kingdom
North America
Canada, Alberta, Manitoba, Nova Scotia, Ontario, Mexico, United
States, Alabama, California, Colorado, Delaware, District of
Columbia, Florida, Indiana, Kentucky, Massachusetts, Michigan,
Nevada, New Jersey, New York, North Carolina, Oklahoma, Oregon,
Pennsylvania, Tennessee, Texas, Utah, Virginia, Washington,
Wisconsin
Oceania
Australia, New Zealand, United States
South America
Argentina, Brazil, Chile
RSYNC Mirrors
Modules: Creation, Use, and Abuse
Guidelines for Module Creation
Guidelines for Converting Perl 4 Library Scripts into Modules
Guidelines for Reusing Application Code
NOTE
perlmodstyle - Perl module style guide
INTRODUCTION
QUICK CHECKLIST
Before you start
The API
Stability
Documentation
Release considerations
BEFORE YOU START WRITING A MODULE
Has it been done before?
Do one thing and do it well
What's in a name?
DESIGNING AND WRITING YOUR MODULE
To OO or not to OO?
Designing your API
Write simple routines to do simple things, Separate functional-
ity from output, Provide sensible shortcuts and defaults, Nam-
ing conventions, Parameter passing
Strictness and warnings
Backwards compatibility
Error handling and messages
DOCUMENTING YOUR MODULE
POD
README, INSTALL, release notes, changelogs
perl Makefile.PL, make, make test, make install, perl Build.PL,
perl Build, perl Build test, perl Build install
RELEASE CONSIDERATIONS
Version numbering
Pre-requisites
Testing
Packaging
Licensing
COMMON PITFALLS
Reinventing the wheel
Trying to do too much
Inappropriate documentation
SEE ALSO
perlstyle, perlnewmod, perlpod, podchecker, Packaging Tools, Test-
ing tools, http://pause.perl.org/, Any good book on software engi-
neering
AUTHOR
perlmodinstall - Installing CPAN Modules
DESCRIPTION
PREAMBLE
DECOMPRESS the file, UNPACK the file into a directory, BUILD
the module (sometimes unnecessary), INSTALL the module
PORTABILITY
HEY
AUTHOR
COPYRIGHT
perlnewmod - preparing a new module for distribution
DESCRIPTION
Warning
What should I make into a module?
Step-by-step: Preparing the ground
Look around, Check it's new, Discuss the need, Choose a name,
Check again
Step-by-step: Making the module
Start with module-starter or h2xs, Use strict and warnings, Use
Carp, Use Exporter - wisely!, Use plain old documentation,
Write tests, Write the README
Step-by-step: Distributing your module
Get a CPAN user ID, "perl Makefile.PL; make test; make dist",
Upload the tarball, Announce to the modules list, Announce to
clpa, Fix bugs!
AUTHOR
SEE ALSO
perlutil - utilities packaged with the Perl distribution
DESCRIPTION
DOCUMENTATION
perldoc, pod2man and pod2text, pod2html and pod2latex,
pod2usage, podselect, podchecker, splain, roffitall
CONVERTORS
a2p, s2p, find2perl
Administration
libnetcfg
Development
perlbug, h2ph, c2ph and pstruct, h2xs, dprofpp, perlcc
SEE ALSO
perlcompile - Introduction to the Perl Compiler-Translator
DESCRIPTION
Layout
B::Bytecode, B::C, B::CC, B::Lint, B::Deparse, B::Xref
Using The Back Ends
The Cross Referencing Back End
i, &, s, r
The Decompiling Back End
The Lint Back End
The Simple C Back End
The Bytecode Back End
The Optimized C Back End
Module List for the Compiler Suite
B, O, B::Asmdata, B::Assembler, B::Bblock, B::Bytecode, B::C,
B::CC, B::Concise, B::Debug, B::Deparse, B::Disassembler, B::Lint,
B::Showlex, B::Stackobj, B::Stash, B::Terse, B::Xref
KNOWN PROBLEMS
AUTHOR
perlfilter - Source Filters
DESCRIPTION
CONCEPTS
USING FILTERS
WRITING A SOURCE FILTER
WRITING A SOURCE FILTER IN C
Decryption Filters
CREATING A SOURCE FILTER AS A SEPARATE EXECUTABLE
WRITING A SOURCE FILTER IN PERL
USING CONTEXT: THE DEBUG FILTER
CONCLUSION
THINGS TO LOOK OUT FOR
Some Filters Clobber the "DATA" Handle
REQUIREMENTS
AUTHOR
Copyrights
perlembed - how to embed perl in your C program
DESCRIPTION
PREAMBLE
Use C from Perl?, Use a Unix program from Perl?, Use Perl from
Perl?, Use C from C?, Use Perl from C?
ROADMAP
Compiling your C program
Adding a Perl interpreter to your C program
Calling a Perl subroutine from your C program
Evaluating a Perl statement from your C program
Performing Perl pattern matches and substitutions from your C pro-
gram
Fiddling with the Perl stack from your C program
Maintaining a persistent interpreter
Execution of END blocks
Maintaining multiple interpreter instances
Using Perl modules, which themselves use C libraries, from your C
program
Embedding Perl under Win32
Hiding Perl_
MORAL
AUTHOR
COPYRIGHT
perldebguts - Guts of Perl debugging
DESCRIPTION
Debugger Internals
Writing Your Own Debugger
Frame Listing Output Examples
Debugging regular expressions
Compile-time output
"anchored" STRING "at" POS, "floating" STRING "at" POS1..POS2,
"matching floating/anchored", "minlen", "stclass" TYPE,
"noscan", "isall", "GPOS", "plus", "implicit", "with eval",
"anchored(TYPE)"
Types of nodes
Run-time output
Debugging Perl memory usage
Using $ENV{PERL_DEBUG_MSTATS}
"buckets SMALLEST(APPROX)..GREATEST(APPROX)", Free/Used, "Total
sbrk(): SBRKed/SBRKs:CONTINUOUS", "pad: 0", "heads: 2192",
"chain: 0", "tail: 6144"
Example of using -DL switch
717, 002, 054, 602, 702, 704
-DL details
"!!!", "!!", "!"
Limitations of -DL statistics
SEE ALSO
perlxstut, perlXStut - Tutorial for writing XSUBs
DESCRIPTION
SPECIAL NOTES
make
Version caveat
Dynamic Loading versus Static Loading
TUTORIAL
EXAMPLE 1
EXAMPLE 2
What has gone on?
Writing good test scripts
EXAMPLE 3
What's new here?
Input and Output Parameters
The XSUBPP Program
The TYPEMAP file
Warning about Output Arguments
EXAMPLE 4
What has happened here?
Anatomy of .xs file
Getting the fat out of XSUBs
More about XSUB arguments
The Argument Stack
Extending your Extension
Documenting your Extension
Installing your Extension
EXAMPLE 5
New Things in this Example
EXAMPLE 6
New Things in this Example
EXAMPLE 7 (Coming Soon)
EXAMPLE 8 (Coming Soon)
EXAMPLE 9 Passing open files to XSes
Troubleshooting these Examples
See also
Author
Last Changed
perlxs - XS language reference manual
DESCRIPTION
Introduction
On The Road
The Anatomy of an XSUB
The Argument Stack
The RETVAL Variable
Returning SVs, AVs and HVs through RETVAL
The MODULE Keyword
The PACKAGE Keyword
The PREFIX Keyword
The OUTPUT: Keyword
The NO_OUTPUT Keyword
The CODE: Keyword
The INIT: Keyword
The NO_INIT Keyword
Initializing Function Parameters
Default Parameter Values
The PREINIT: Keyword
The SCOPE: Keyword
The INPUT: Keyword
The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
The "length(NAME)" Keyword
Variable-length Parameter Lists
The C_ARGS: Keyword
The PPCODE: Keyword
Returning Undef And Empty Lists
The REQUIRE: Keyword
The CLEANUP: Keyword
The POSTCALL: Keyword
The BOOT: Keyword
The VERSIONCHECK: Keyword
The PROTOTYPES: Keyword
The PROTOTYPE: Keyword
The ALIAS: Keyword
The OVERLOAD: Keyword
The FALLBACK: Keyword
The INTERFACE: Keyword
The INTERFACE_MACRO: Keyword
The INCLUDE: Keyword
The CASE: Keyword
The & Unary Operator
Inserting POD, Comments and C Preprocessor Directives
Using XS With C++
Interface Strategy
Perl Objects And C Structures
The Typemap
Safely Storing Static Data in XS
MY_CXT_KEY, typedef my_cxt_t, START_MY_CXT, MY_CXT_INIT,
dMY_CXT, MY_CXT
EXAMPLES
XS VERSION
AUTHOR
perlclib - Internal replacements for standard C library functions
DESCRIPTION
Conventions
"t", "p", "n", "s"
File Operations
File Input and Output
File Positioning
Memory Management and String Handling
Character Class Tests
stdlib.h functions
Miscellaneous functions
SEE ALSO
perlguts - Introduction to the Perl API
DESCRIPTION
Variables
Datatypes
What is an "IV"?
Working with SVs
Offsets
What's Really Stored in an SV?
Working with AVs
Working with HVs
Hash API Extensions
AVs, HVs and undefined values
References
Blessed References and Class Objects
Creating New Variables
GV_ADDMULTI, GV_ADDWARN
Reference Counts and Mortality
Stashes and Globs
Double-Typed SVs
Magic Variables
Assigning Magic
Magic Virtual Tables
Finding Magic
Understanding the Magic of Tied Hashes and Arrays
Localizing changes
"SAVEINT(int i)", "SAVEIV(IV i)", "SAVEI32(I32 i)", "SAVE-
LONG(long i)", SAVESPTR(s), SAVEPPTR(p), "SAVEFREESV(SV *sv)",
"SAVEMORTALIZESV(SV *sv)", "SAVEFREEOP(OP *op)", SAVEFREEPV(p),
"SAVECLEARSV(SV *sv)", "SAVEDELETE(HV *hv, char *key, I32
length)", "SAVEDESTRUCTOR(DESTRUCTORFUNC_NOCONTEXT_t f, void
*p)", "SAVEDESTRUCTOR_X(DESTRUCTORFUNC_t f, void *p)", "SAVES-
TACK_POS()", "SV* save_scalar(GV *gv)", "AV* save_ary(GV *gv)",
"HV* save_hash(GV *gv)", "void save_item(SV *item)", "void
save_list(SV **sarg, I32 maxsarg)", "SV* save_svref(SV
**sptr)", "void save_aptr(AV **aptr)", "void save_hptr(HV
**hptr)"
Subroutines
XSUBs and the Argument Stack
Calling Perl Routines from within C Programs
Memory Allocation
PerlIO
Putting a C value on Perl stack
Scratchpads
Scratchpads and recursion
Compiled code
Code tree
Examining the tree
Compile pass 1: check routines
Compile pass 1a: constant folding
Compile pass 2: context propagation
Compile pass 3: peephole optimization
Pluggable runops
Examining internal data structures with the "dump" functions
How multiple interpreters and concurrency are supported
Background and PERL_IMPLICIT_CONTEXT
So what happened to dTHR?
How do I use all this in extensions?
Should I do anything special if I call perl from multiple threads?
Future Plans and PERL_IMPLICIT_SYS
Internal Functions
A, p, d, s, n, r, f, M, o, x, m, X, E, b
Formatted Printing of IVs, UVs, and NVs
Pointer-To-Integer and Integer-To-Pointer
Source Documentation
Backwards compatibility
Unicode Support
What is Unicode, anyway?
How can I recognise a UTF-8 string?
How does UTF-8 represent Unicode characters?
How does Perl store UTF-8 strings?
How do I convert a string to UTF-8?
Is there anything else I need to know?
Custom Operators
AUTHORS
SEE ALSO
perlcall - Perl calling conventions from C
DESCRIPTION
An Error Handler, An Event Driven Program
THE CALL_ FUNCTIONS
call_sv, call_pv, call_method, call_argv
FLAG VALUES
G_VOID
G_SCALAR
G_ARRAY
G_DISCARD
G_NOARGS
G_EVAL
G_KEEPERR
Determining the Context
KNOWN PROBLEMS
EXAMPLES
No Parameters, Nothing returned
Passing Parameters
Returning a Scalar
Returning a list of values
Returning a list in a scalar context
Returning Data from Perl via the parameter list
Using G_EVAL
Using G_KEEPERR
Using call_sv
Using call_argv
Using call_method
Using GIMME_V
Using Perl to dispose of temporaries
Strategies for storing Callback Context Information
1. Ignore the problem - Allow only 1 callback, 2. Create a
sequence of callbacks - hard wired limit, 3. Use a parameter to
map to the Perl callback
Alternate Stack Manipulation
Creating and calling an anonymous subroutine in C
SEE ALSO
AUTHOR
DATE
perlapi - autogenerated documentation for the perl public API
DESCRIPTION
"Gimme" Values
GIMME, GIMME_V, G_ARRAY, G_DISCARD, G_EVAL, G_NOARGS, G_SCALAR,
G_VOID
Array Manipulation Functions
AvFILL, av_clear, av_delete, av_exists, av_extend, av_fetch,
av_fill, av_len, av_make, av_pop, av_push, av_shift, av_store,
av_undef, av_unshift, get_av, newAV, sortsv
Callback Functions
call_argv, call_method, call_pv, call_sv, ENTER, eval_pv, eval_sv,
FREETMPS, LEAVE, SAVETMPS
Character classes
isALNUM, isALPHA, isDIGIT, isLOWER, isSPACE, isUPPER, toLOWER,
toUPPER
Cloning an interpreter
perl_clone
CV Manipulation Functions
CvSTASH, get_cv
Embedding Functions
cv_undef, load_module, nothreadhook, perl_alloc, perl_construct,
perl_destruct, perl_free, perl_parse, perl_run, require_pv
Functions in file pp_pack.c
packlist, pack_cat, unpackstring, unpack_str
Global Variables
PL_modglobal, PL_na, PL_sv_no, PL_sv_undef, PL_sv_yes
GV Functions
GvSV, gv_fetchmeth, gv_fetchmethod, gv_fetchmethod_autoload,
gv_fetchmeth_autoload, gv_stashpv, gv_stashpvn, gv_stashsv
Handy Values
Nullav, Nullch, Nullcv, Nullhv, Nullsv
Hash Manipulation Functions
get_hv, HEf_SVKEY, HeHASH, HeKEY, HeKLEN, HePV, HeSVKEY, HeS-
VKEY_force, HeSVKEY_set, HeVAL, HvNAME, hv_clear, hv_clear_place-
holders, hv_delete, hv_delete_ent, hv_exists, hv_exists_ent,
hv_fetch, hv_fetch_ent, hv_iterinit, hv_iterkey, hv_iterkeysv,
hv_iternext, hv_iternextsv, hv_iternext_flags, hv_iterval,
hv_magic, hv_scalar, hv_store, hv_store_ent, hv_undef, newHV
Magical Functions
mg_clear, mg_copy, mg_find, mg_free, mg_get, mg_length, mg_magical,
mg_set, SvGETMAGIC, SvLOCK, SvSETMAGIC, SvSetMagicSV, SvSetMag-
icSV_nosteal, SvSetSV, SvSetSV_nosteal, SvSHARE, SvUNLOCK
Memory Management
Copy, CopyD, Move, MoveD, New, Newc, Newz, Poison, Renew, Renewc,
Safefree, savepv, savepvn, savesharedpv, savesvpv, StructCopy,
Zero, ZeroD
Miscellaneous Functions
fbm_compile, fbm_instr, form, getcwd_sv, strEQ, strGE, strGT,
strLE, strLT, strNE, strnEQ, strnNE, sv_nolocking, sv_nosharing,
sv_nounlocking
Numeric functions
grok_bin, grok_hex, grok_number, grok_numeric_radix, grok_oct,
scan_bin, scan_hex, scan_oct
Optree Manipulation Functions
cv_const_sv, newCONSTSUB, newXS
Pad Data Structures
pad_sv
Stack Manipulation Macros
dMARK, dORIGMARK, dSP, EXTEND, MARK, mPUSHi, mPUSHn, mPUSHp,
mPUSHu, mXPUSHi, mXPUSHn, mXPUSHp, mXPUSHu, ORIGMARK, POPi, POPl,
POPn, POPp, POPpbytex, POPpx, POPs, PUSHi, PUSHMARK, PUSHmortal,
PUSHn, PUSHp, PUSHs, PUSHu, PUTBACK, SP, SPAGAIN, XPUSHi, XPUSHmor-
tal, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XSRETURN, XSRETURN_EMPTY,
XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF,
XSRETURN_UV, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV, XST_mPV,
XST_mUNDEF, XST_mYES
SV Flags
svtype, SVt_IV, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV,
SVt_PVMG
SV Manipulation Functions
get_sv, looks_like_number, newRV_inc, newRV_noinc, NEWSV, newSV,
newSViv, newSVnv, newSVpv, newSVpvf, newSVpvn, newSVpvn_share,
newSVrv, newSVsv, newSVuv, SvCUR, SvCUR_set, SvEND, SvGROW, SvIOK,
SvIOKp, SvIOK_notUV, SvIOK_off, SvIOK_on, SvIOK_only,
SvIOK_only_UV, SvIOK_UV, SvIsCOW, SvIsCOW_shared_hash, SvIV, SvIVX,
SvIVx, SvLEN, SvNIOK, SvNIOKp, SvNIOK_off, SvNOK, SvNOKp,
SvNOK_off, SvNOK_on, SvNOK_only, SvNV, SvNVX, SvNVx, SvOK, SvOOK,
SvPOK, SvPOKp, SvPOK_off, SvPOK_on, SvPOK_only, SvPOK_only_UTF8,
SvPV, SvPVbyte, SvPVbytex, SvPVbytex_force, SvPVbyte_force,
SvPVbyte_nolen, SvPVutf8, SvPVutf8x, SvPVutf8x_force,
SvPVutf8_force, SvPVutf8_nolen, SvPVX, SvPVx, SvPV_force,
SvPV_force_nomg, SvPV_nolen, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc,
SvROK, SvROK_off, SvROK_on, SvRV, SvSTASH, SvTAINT, SvTAINTED,
SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE, SvUOK, SvUPGRADE,
SvUTF8, SvUTF8_off, SvUTF8_on, SvUV, SvUVX, SvUVx, sv_2bool,
sv_2cv, sv_2io, sv_2iv, sv_2mortal, sv_2nv, sv_2pvbyte,
sv_2pvbyte_nolen, sv_2pvutf8, sv_2pvutf8_nolen, sv_2pv_flags,
sv_2pv_nolen, sv_2uv, sv_backoff, sv_bless, sv_catpv, sv_catpvf,
sv_catpvf_mg, sv_catpvn, sv_catpvn_flags, sv_catpvn_mg, sv_cat-
pvn_nomg, sv_catpv_mg, sv_catsv, sv_catsv_flags, sv_catsv_mg,
sv_catsv_nomg, sv_chop, sv_clear, sv_cmp, sv_cmp_locale, sv_col-
lxfrm, sv_copypv, sv_dec, sv_derived_from, sv_eq, sv_force_normal,
sv_force_normal_flags, sv_free, sv_gets, sv_grow, sv_inc,
sv_insert, sv_isa, sv_isobject, sv_iv, sv_len, sv_len_utf8,
sv_magic, sv_magicext, sv_mortalcopy, sv_newmortal, sv_newref,
sv_nv, sv_pos_b2u, sv_pos_u2b, sv_pv, sv_pvbyte, sv_pvbyten,
sv_pvbyten_force, sv_pvn, sv_pvn_force, sv_pvn_force_flags,
sv_pvutf8, sv_pvutf8n, sv_pvutf8n_force, sv_reftype, sv_replace,
sv_report_used, sv_reset, sv_rvweaken, sv_setiv, sv_setiv_mg,
sv_setnv, sv_setnv_mg, sv_setpv, sv_setpvf, sv_setpvf_mg, sv_setp-
viv, sv_setpviv_mg, sv_setpvn, sv_setpvn_mg, sv_setpv_mg,
sv_setref_iv, sv_setref_nv, sv_setref_pv, sv_setref_pvn,
sv_setref_uv, sv_setsv, sv_setsv_flags, sv_setsv_mg, sv_setsv_nomg,
sv_setuv, sv_setuv_mg, sv_taint, sv_tainted, sv_true, sv_unmagic,
sv_unref, sv_unref_flags, sv_untaint, sv_upgrade, sv_usepvn,
sv_usepvn_mg, sv_utf8_decode, sv_utf8_downgrade, sv_utf8_encode,
sv_utf8_upgrade, sv_utf8_upgrade_flags, sv_uv, sv_vcatpvf, sv_vcat-
pvfn, sv_vcatpvf_mg, sv_vsetpvf, sv_vsetpvfn, sv_vsetpvf_mg
Unicode Support
bytes_from_utf8, bytes_to_utf8, ibcmp_utf8, is_utf8_char,
is_utf8_string, is_utf8_string_loc, pv_uni_display, sv_cat_decode,
sv_recode_to_utf8, sv_uni_display, to_utf8_case, to_utf8_fold,
to_utf8_lower, to_utf8_title, to_utf8_upper, utf8n_to_uvchr,
utf8n_to_uvuni, utf8_distance, utf8_hop, utf8_length,
utf8_to_bytes, utf8_to_uvchr, utf8_to_uvuni, uvchr_to_utf8,
uvuni_to_utf8_flags
Variables created by "xsubpp" and "xsubpp" internal functions
ax, CLASS, dAX, dITEMS, dXSARGS, dXSI32, items, ix, newXSproto,
RETVAL, ST, THIS, XS, XS_VERSION, XS_VERSION_BOOTCHECK
Warning and Dieing
croak, warn
AUTHORS
SEE ALSO
perlintern - autogenerated documentation of purely internal Perl func-
tions
DESCRIPTION
CV reference counts and CvOUTSIDE
CvWEAKOUTSIDE
Functions in file pad.h
CX_CURPAD_SAVE, CX_CURPAD_SV, PAD_BASE_SV, PAD_CLONE_VARS,
PAD_COMPNAME_FLAGS, PAD_COMPNAME_GEN, PAD_COMPNAME_OURSTASH,
PAD_COMPNAME_PV, PAD_COMPNAME_TYPE, PAD_DUP, PAD_RESTORE_LOCAL,
PAD_SAVE_LOCAL, PAD_SAVE_SETNULLPAD, PAD_SETSV, PAD_SET_CUR,
PAD_SET_CUR_NOSAVE, PAD_SV, PAD_SVl, SAVECLEARSV, SAVECOMPPAD,
SAVEPADSV
Functions in file pp_ctl.c
find_runcv
Global Variables
PL_DBsingle, PL_DBsub, PL_DBtrace, PL_dowarn, PL_last_in_gv,
PL_ofs_sv, PL_rs
GV Functions
is_gv_magical
IO Functions
start_glob
Pad Data Structures
CvPADLIST, cv_clone, cv_dump, do_dump_pad, intro_my, pad_add_anon,
pad_add_name, pad_alloc, pad_block_start, pad_check_dup, pad_find-
lex, pad_findmy, pad_fixup_inner_anons, pad_free, pad_leavemy,
pad_new, pad_push, pad_reset, pad_setsv, pad_swipe, pad_tidy,
pad_undef
Stack Manipulation Macros
djSP, LVRET
SV Manipulation Functions
report_uninit, sv_add_arena, sv_clean_all, sv_clean_objs,
sv_free_arenas
AUTHORS
SEE ALSO
perliol - C API for Perl's implementation of IO in Layers.
SYNOPSIS
DESCRIPTION
History and Background
Basic Structure
Layers vs Disciplines
Data Structures
Functions and Attributes
Per-instance Data
Layers in action.
Per-instance flag bits
PERLIO_F_EOF, PERLIO_F_CANWRITE, PERLIO_F_CANREAD, PER-
LIO_F_ERROR, PERLIO_F_TRUNCATE, PERLIO_F_APPEND, PERLIO_F_CRLF,
PERLIO_F_UTF8, PERLIO_F_UNBUF, PERLIO_F_WRBUF, PERLIO_F_RDBUF,
PERLIO_F_LINEBUF, PERLIO_F_TEMP, PERLIO_F_OPEN, PERLIO_F_FAST-
GETS
Methods in Detail
fsize, name, size, kind, PERLIO_K_BUFFERED, PERLIO_K_RAW, PER-
LIO_K_CANCRLF, PERLIO_K_FASTGETS, PERLIO_K_MULTIARG, Pushed,
Popped, Open, Binmode, Getarg, Fileno, Dup, Read, Write, Seek,
Tell, Close, Flush, Fill, Eof, Error, Clearerr, Setlinebuf,
Get_base, Get_bufsiz, Get_ptr, Get_cnt, Set_ptrcnt
Utilities
Implementing PerlIO Layers
C implementations, Perl implementations
Core Layers
"unix", "perlio", "stdio", "crlf", "mmap", "pending", "raw",
"utf8"
Extension Layers
":encoding", ":scalar", ":via"
TODO
perlapio - perl's IO abstraction interface.
SYNOPSIS
DESCRIPTION
1. USE_STDIO, 2. USE_SFIO, 3. USE_PERLIO, PerlIO_stdin(), Per-
lIO_stdout(), PerlIO_stderr(), PerlIO_open(path, mode), Per-
lIO_fdopen(fd,mode), PerlIO_reopen(path,mode,f), Per-
lIO_printf(f,fmt,...), PerlIO_vprintf(f,fmt,a), PerlIO_std-
outf(fmt,...), PerlIO_read(f,buf,count), PerlIO_write(f,buf,count),
PerlIO_close(f), PerlIO_puts(f,s), PerlIO_putc(f,c), Per-
lIO_ungetc(f,c), PerlIO_getc(f), PerlIO_eof(f), PerlIO_error(f),
PerlIO_fileno(f), PerlIO_clearerr(f), PerlIO_flush(f), Per-
lIO_seek(f,offset,whence), PerlIO_tell(f), PerlIO_getpos(f,p), Per-
lIO_setpos(f,p), PerlIO_rewind(f), PerlIO_tmpfile(), PerlIO_set-
linebuf(f)
Co-existence with stdio
PerlIO_importFILE(f,mode), PerlIO_exportFILE(f,mode), Per-
lIO_releaseFILE(p,f), PerlIO_findFILE(f)
"Fast gets" Functions
PerlIO_fast_gets(f), PerlIO_has_cntptr(f), PerlIO_get_cnt(f),
PerlIO_get_ptr(f), PerlIO_set_ptrcnt(f,p,c), Per-
lIO_canset_cnt(f), PerlIO_set_cnt(f,c), PerlIO_has_base(f),
PerlIO_get_base(f), PerlIO_get_bufsiz(f)
Other Functions
PerlIO_apply_layers(f,mode,layers), PerlIO_bin-
mode(f,ptype,imode,layers), '<' read, '>' write, '+'
read/write, PerlIO_debug(fmt,...)
perlhack - How to hack at the Perl internals
DESCRIPTION
Does concept match the general goals of Perl?, Where is the imple-
mentation?, Backwards compatibility, Could it be a module instead?,
Is the feature generic enough?, Does it potentially introduce new
bugs?, Does it preclude other desirable features?, Is the implemen-
tation robust?, Is the implementation generic enough to be
portable?, Is the implementation tested?, Is there enough documen-
tation?, Is there another way to do it?, Does it create too much
work?, Patches speak louder than words
Keeping in sync
rsync'ing the source tree, Using rsync over the LAN, Using
pushing over the NFS, rsync'ing the patches
Why rsync the source tree
It's easier to rsync the source tree, It's more reliable
Why rsync the patches
It's easier to rsync the patches, It's a good reference, Find-
ing a start point, Finding how to fix a bug, Finding the source
of misbehaviour
Working with the source
Perlbug administration
Submitting patches
perlguts, perlxstut and perlxs, perlapi, Porting/pumpkin.pod,
The perl5-porters FAQ
Finding Your Way Around
Core modules, Tests, Documentation, Configure, Interpreter
Elements of the interpreter
Startup, Parsing, Optimization, Running, Exception handing
Internal Variable Types
Op Trees
Stacks
Argument stack, Mark stack, Save stack
Millions of Macros
The .i Targets
Poking at Perl
Using a source-level debugger
run [args], break function_name, break source.c:xxx, step,
next, continue, finish, 'enter', print
gdb macro support
Dumping Perl Data Structures
Patching
Patching a core module
Adding a new function to the core
Writing a test
t/base/, t/cmd/, t/comp/, t/io/, t/lib/, t/op/, t/pod/, t/run/,
t/uni/, t/win32/, t/x2p, t/base t/comp, t/cmd t/run t/io t/op,
t/lib ext lib
Special Make Test Targets
coretest, test.deparse, test.taintwarn, minitest, test.valgrind
check.valgrind utest.valgrind ucheck.valgrind, test.third
check.third utest.third ucheck.third, test.torture torturetest,
utest ucheck test.utf8 check.utf8, minitest.utf16 test.utf16,
test_harness, test-notty test_notty
Running tests by hand
-v, -torture, -re=PATTERN, -re LIST OF PATTERNS, PERL_CORE=1,
PERL_DESTRUCT_LEVEL=2, PERL, PERL_SKIP_TTY_TEST
EXTERNAL TOOLS FOR DEBUGGING PERL
Rational Software's Purify
Purify on Unix
-Accflags=-DPURIFY, -Doptimize='-g', -Uusemymalloc, -Dusemulti-
plicity
Purify on NT
DEFINES, USE_MULTI = define, #PERL_MALLOC = define, CFG = Debug
valgrind
Compaq's/Digital's/HP's Third Degree
PERL_DESTRUCT_LEVEL
Profiling
Gprof Profiling
-a, -b, -e routine, -f routine, -s, -z
GCC gcov Profiling
Pixie Profiling
-h, -l, -p[rocedures], -h[eavy], -i[nvocations], -l[ines],
-testcoverage, -z[ero]
Miscellaneous tricks
CONCLUSION
The Road goes ever on and on, down from the door where it
began.
AUTHOR
perlbook - Perl book information
DESCRIPTION
perltodo - Perl TO-DO List
DESCRIPTION
assertions
iCOW
(?{...}) closures in regexps
A re-entrant regexp engine
pragmata
lexical pragmas
use less 'memory'
prototypes and functions
_ prototype character
inlining autoloaded constants
Finish off lvalue functions
Unicode and UTF8
Implicit Latin 1 => Unicode translation
UTF8 caching code
Unicode in Filenames
Unicode in %ENV
Regexps
regexp optimiser optional
POD
POD -> HTML conversion still sucks
Misc medium sized projects
UNITCHECK
optional optimizer
You WANT *how* many
lexical aliases
no 6
IPv6
entersub XS vs Perl
@INC source filter to Filter::Simple
bincompat functions
Use fchown/fchmod internally
Constant folding
Tests
Make Schwern poorer
test B
common test code for timed bailout
Installation
compressed man pages
Make Config.pm cope with differences between build and installed
perl
Relocatable perl
make HTML install work
put patchlevel in -v
Incremental things
autovivification
fix tainting bugs
Make tainting consistent
Dual life everything
Vague things
threads
POSIX memory footprint
Optimize away @_
switch ops
Attach/detach debugger from running program
A decent benchmark
readpipe(LIST)
Self ties
perldoc - Look up Perl documentation in Pod format.
SYNOPSIS
DESCRIPTION
OPTIONS
-h, -v, -t, -u, -m module, -l, -F, -f perlfunc, -q perlfaq-search-
regexp, -T, -d destination-filename, -o output-formatname, -M mod-
ule-name, -w option:value or -w option, -X, PageName|Module-
Name|ProgramName, -n some-formatter, -r, -i, -V
SECURITY
ENVIRONMENT
AUTHOR
perlhist - the Perl history records
DESCRIPTION
INTRODUCTION
THE KEEPERS OF THE PUMPKIN
PUMPKIN?
THE RECORDS
SELECTED RELEASE SIZES
SELECTED PATCH SIZES
THE KEEPERS OF THE RECORDS
perldelta - what is new for perl v5.8.7
DESCRIPTION
Incompatible Changes
Core Enhancements
Unicode Character Database 4.1.0
suidperl less insecure
Optional site customization script
"Config.pm" is now much smaller.
Modules and Pragmata
Utility Changes
find2perl enhancements
Performance Enhancements
Installation and Configuration Improvements
Selected Bug Fixes
New or Changed Diagnostics
Changed Internals
Known Problems
Reporting Bugs
SEE ALSO
perl587delta, perldelta - what is new for perl v5.8.7
DESCRIPTION
Incompatible Changes
Core Enhancements
Unicode Character Database 4.1.0
suidperl less insecure
Optional site customization script
"Config.pm" is now much smaller.
Modules and Pragmata
Utility Changes
find2perl enhancements
Performance Enhancements
Installation and Configuration Improvements
Selected Bug Fixes
New or Changed Diagnostics
Changed Internals
Known Problems
Reporting Bugs
SEE ALSO
perl586delta - what is new for perl v5.8.6
DESCRIPTION
Incompatible Changes
Core Enhancements
Modules and Pragmata
Utility Changes
Performance Enhancements
Selected Bug Fixes
New or Changed Diagnostics
Changed Internals
New Tests
Reporting Bugs
SEE ALSO
perl585delta - what is new for perl v5.8.5
DESCRIPTION
Incompatible Changes
Core Enhancements
Modules and Pragmata
Utility Changes
Perl's debugger
h2ph
Installation and Configuration Improvements
Selected Bug Fixes
New or Changed Diagnostics
Changed Internals
Known Problems
Platform Specific Problems
Reporting Bugs
SEE ALSO
perl584delta - what is new for perl v5.8.4
DESCRIPTION
Incompatible Changes
Core Enhancements
Malloc wrapping
Unicode Character Database 4.0.1
suidperl less insecure
format
Modules and Pragmata
Updated modules
Attribute::Handlers, B, Benchmark, CGI, Carp, Cwd, Exporter,
File::Find, IO, IPC::Open3, Local::Maketext, Math::BigFloat,
Math::BigInt, Math::BigRat, MIME::Base64, ODBM_File, POSIX,
Shell, Socket, Storable, Switch, Sys::Syslog, Term::ANSIColor,
Time::HiRes, Unicode::UCD, Win32, base, open, threads, utf8
Performance Enhancements
Utility Changes
Installation and Configuration Improvements
Selected Bug Fixes
New or Changed Diagnostics
Changed Internals
Future Directions
Platform Specific Problems
Reporting Bugs
SEE ALSO
perl583delta - what is new for perl v5.8.3
DESCRIPTION
Incompatible Changes
Core Enhancements
Modules and Pragmata
CGI, Cwd, Digest, Digest::MD5, Encode, File::Spec, FindBin,
List::Util, Math::BigInt, PodParser, Pod::Perldoc, POSIX, Uni-
code::Collate, Unicode::Normalize, Test::Harness, threads::shared
Utility Changes
New Documentation
Installation and Configuration Improvements
Selected Bug Fixes
New or Changed Diagnostics
Changed Internals
Configuration and Building
Platform Specific Problems
Known Problems
Future Directions
Obituary
Reporting Bugs
SEE ALSO
perl582delta - what is new for perl v5.8.2
DESCRIPTION
Incompatible Changes
Core Enhancements
Hash Randomisation
Threading
Modules and Pragmata
Updated Modules And Pragmata
Devel::PPPort, Digest::MD5, I18N::LangTags, libnet,
MIME::Base64, Pod::Perldoc, strict, Tie::Hash, Time::HiRes,
Unicode::Collate, Unicode::Normalize, UNIVERSAL
Selected Bug Fixes
Changed Internals
Platform Specific Problems
Future Directions
Reporting Bugs
SEE ALSO
perl581delta - what is new for perl v5.8.1
DESCRIPTION
Incompatible Changes
Hash Randomisation
UTF-8 On Filehandles No Longer Activated By Locale
Single-number v-strings are no longer v-strings before "=>"
(Win32) The -C Switch Has Been Repurposed
(Win32) The /d Switch Of cmd.exe
Core Enhancements
UTF-8 no longer default under UTF-8 locales
Unsafe signals again available
Tied Arrays with Negative Array Indices
local ${$x}
Unicode Character Database 4.0.0
Deprecation Warnings
Miscellaneous Enhancements
Modules and Pragmata
Updated Modules And Pragmata
base, B::Bytecode, B::Concise, B::Deparse, Benchmark,
ByteLoader, bytes, CGI, charnames, CPAN, Data::Dumper, DB_File,
Devel::PPPort, Digest::MD5, Encode, fields, libnet, Math::Big-
Int, MIME::Base64, NEXT, Net::Ping, PerlIO::scalar, podlators,
Pod::LaTeX, PodParsers, Pod::Perldoc, Scalar::Util, Storable,
strict, Term::ANSIcolor, Test::Harness, Test::More, Test::Sim-
ple, Text::Balanced, Time::HiRes, threads, threads::shared,
Unicode::Collate, Unicode::Normalize, Win32::GetFolderPath,
Win32::GetOSVersion
Utility Changes
New Documentation
Installation and Configuration Improvements
Platform-specific enhancements
Selected Bug Fixes
Closures, eval and lexicals
Generic fixes
Platform-specific fixes
New or Changed Diagnostics
Changed "A thread exited while %d threads were running"
Removed "Attempt to clear a restricted hash"
New "Illegal declaration of anonymous subroutine"
Changed "Invalid range "%s" in transliteration operator"
New "Missing control char name in \c"
New "Newline in left-justified string for %s"
New "Possible precedence problem on bitwise %c operator"
New "Pseudo-hashes are deprecated"
New "read() on %s filehandle %s"
New "5.005 threads are deprecated"
New "Tied variable freed while still in use"
New "To%s: illegal mapping '%s'"
New "Use of freed value in iteration"
Changed Internals
New Tests
Known Problems
Tied hashes in scalar context
Net::Ping 450_service and 510_ping_udp failures
B::C
Platform Specific Problems
EBCDIC Platforms
Cygwin 1.5 problems
HP-UX: HP cc warnings about sendfile and sendpath
IRIX: t/uni/tr_7jis.t falsely failing
Mac OS X: no usemymalloc
Tr