summaryrefslogtreecommitdiff
path: root/tests/lexers/groff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2021-01-18 21:24:00 +0100
committerGeorg Brandl <georg@python.org>2021-01-18 22:08:36 +0100
commit2a3d3a7d5b9c60dedf6638d876161d9563faebcf (patch)
tree809c0b4a686db98f5954afa1944404cd9652c6b2 /tests/lexers/groff
parentf0445be718da83541ea3401aad882f3937147263 (diff)
downloadpygments-git-examplefiles.tar.gz
Move test_examplefiles to new tests/lexers scheme.examplefiles
Diffstat (limited to 'tests/lexers/groff')
-rw-r--r--tests/lexers/groff/example.txt9306
1 files changed, 9306 insertions, 0 deletions
diff --git a/tests/lexers/groff/example.txt b/tests/lexers/groff/example.txt
new file mode 100644
index 00000000..245b3878
--- /dev/null
+++ b/tests/lexers/groff/example.txt
@@ -0,0 +1,9306 @@
+---input---
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. | will give a
+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFUNC 1"
+.TH PERLFUNC 1 "2006-01-07" "perl v5.8.8" "Perl Programmers Reference Guide"
+.SH "NAME"
+.IX Xref "function"
+perlfunc \- Perl builtin functions
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The functions in this section can serve as terms in an expression.
+They fall into two major categories: list operators and named unary
+operators. These differ in their precedence relationship with a
+following comma. (See the precedence table in perlop.) List
+operators take more than one argument, while unary operators can never
+take more than one argument. Thus, a comma terminates the argument of
+a unary operator, but merely separates the arguments of a list
+operator. A unary operator generally provides a scalar context to its
+argument, while a list operator may provide either scalar or list
+contexts for its arguments. If it does both, the scalar arguments will
+be first, and the list argument will follow. (Note that there can ever
+be only one such list argument.) For instance, \fIsplice()\fR has three scalar
+arguments followed by a list, whereas \fIgethostbyname()\fR has four scalar
+arguments.
+.PP
+In the syntax descriptions that follow, list operators that expect a
+list (and provide list context for the elements of the list) are shown
+with \s-1LIST\s0 as an argument. Such a list may consist of any combination
+of scalar arguments or list values; the list values will be included
+in the list as if each individual element were interpolated at that
+point in the list, forming a longer single-dimensional list value.
+Commas should separate elements of the \s-1LIST\s0.
+.PP
+Any function in the list below may be used either with or without
+parentheses around its arguments. (The syntax descriptions omit the
+parentheses.) If you use the parentheses, the simple (but occasionally
+surprising) rule is this: It \fIlooks\fR like a function, therefore it \fIis\fR a
+function, and precedence doesn't matter. Otherwise it's a list
+operator or unary operator, and precedence does matter. And whitespace
+between the function and left parenthesis doesn't count\*(--so you need to
+be careful sometimes:
+.PP
+.Vb 5
+\& print 1+2+4; # Prints 7.
+\& print(1+2) + 4; # Prints 3.
+\& print (1+2)+4; # Also prints 3!
+\& print +(1+2)+4; # Prints 7.
+\& print ((1+2)+4); # Prints 7.
+.Ve
+.PP
+If you run Perl with the \fB\-w\fR switch it can warn you about this. For
+example, the third line above produces:
+.PP
+.Vb 2
+\& print (...) interpreted as function at - line 1.
+\& Useless use of integer addition in void context at - line 1.
+.Ve
+.PP
+A few functions take no arguments at all, and therefore work as neither
+unary nor list operators. These include such functions as \f(CW\*(C`time\*(C'\fR
+and \f(CW\*(C`endpwent\*(C'\fR. For example, \f(CW\*(C`time+86_400\*(C'\fR always means
+\&\f(CW\*(C`time() + 86_400\*(C'\fR.
+.PP
+For functions that can be used in either a scalar or list context,
+nonabortive failure is generally indicated in a scalar context by
+returning the undefined value, and in a list context by returning the
+null list.
+.PP
+Remember the following important rule: There is \fBno rule\fR that relates
+the behavior of an expression in list context to its behavior in scalar
+context, or vice versa. It might do two totally different things.
+Each operator and function decides which sort of value it would be most
+appropriate to return in scalar context. Some operators return the
+length of the list that would have been returned in list context. Some
+operators return the first value in the list. Some operators return the
+last value in the list. Some operators return a count of successful
+operations. In general, they do what you want, unless you want
+consistency.
+.IX Xref "context"
+.PP
+A named array in scalar context is quite different from what would at
+first glance appear to be a list in scalar context. You can't get a list
+like \f(CW\*(C`(1,2,3)\*(C'\fR into being in scalar context, because the compiler knows
+the context at compile time. It would generate the scalar comma operator
+there, not the list construction version of the comma. That means it
+was never a list to start with.
+.PP
+In general, functions in Perl that serve as wrappers for system calls
+of the same name (like \fIchown\fR\|(2), \fIfork\fR\|(2), \fIclosedir\fR\|(2), etc.) all return
+true when they succeed and \f(CW\*(C`undef\*(C'\fR otherwise, as is usually mentioned
+in the descriptions below. This is different from the C interfaces,
+which return \f(CW\*(C`\-1\*(C'\fR on failure. Exceptions to this rule are \f(CW\*(C`wait\*(C'\fR,
+\&\f(CW\*(C`waitpid\*(C'\fR, and \f(CW\*(C`syscall\*(C'\fR. System calls also set the special \f(CW$!\fR
+variable on failure. Other functions do not, except accidentally.
+.Sh "Perl Functions by Category"
+.IX Xref "function"
+.IX Subsection "Perl Functions by Category"
+Here are Perl's functions (including things that look like
+functions, like some keywords and named operators)
+arranged by category. Some functions appear in more
+than one place.
+.IP "Functions for SCALARs or strings" 4
+.IX Xref "scalar string character"
+.IX Item "Functions for SCALARs or strings"
+\&\f(CW\*(C`chomp\*(C'\fR, \f(CW\*(C`chop\*(C'\fR, \f(CW\*(C`chr\*(C'\fR, \f(CW\*(C`crypt\*(C'\fR, \f(CW\*(C`hex\*(C'\fR, \f(CW\*(C`index\*(C'\fR, \f(CW\*(C`lc\*(C'\fR, \f(CW\*(C`lcfirst\*(C'\fR,
+\&\f(CW\*(C`length\*(C'\fR, \f(CW\*(C`oct\*(C'\fR, \f(CW\*(C`ord\*(C'\fR, \f(CW\*(C`pack\*(C'\fR, \f(CW\*(C`q/STRING/\*(C'\fR, \f(CW\*(C`qq/STRING/\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR,
+\&\f(CW\*(C`rindex\*(C'\fR, \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`substr\*(C'\fR, \f(CW\*(C`tr///\*(C'\fR, \f(CW\*(C`uc\*(C'\fR, \f(CW\*(C`ucfirst\*(C'\fR, \f(CW\*(C`y///\*(C'\fR
+.IP "Regular expressions and pattern matching" 4
+.IX Xref "regular expression regex regexp"
+.IX Item "Regular expressions and pattern matching"
+\&\f(CW\*(C`m//\*(C'\fR, \f(CW\*(C`pos\*(C'\fR, \f(CW\*(C`quotemeta\*(C'\fR, \f(CW\*(C`s///\*(C'\fR, \f(CW\*(C`split\*(C'\fR, \f(CW\*(C`study\*(C'\fR, \f(CW\*(C`qr//\*(C'\fR
+.IP "Numeric functions" 4
+.IX Xref "numeric number trigonometric trigonometry"
+.IX Item "Numeric functions"
+\&\f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`atan2\*(C'\fR, \f(CW\*(C`cos\*(C'\fR, \f(CW\*(C`exp\*(C'\fR, \f(CW\*(C`hex\*(C'\fR, \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`log\*(C'\fR, \f(CW\*(C`oct\*(C'\fR, \f(CW\*(C`rand\*(C'\fR,
+\&\f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`sqrt\*(C'\fR, \f(CW\*(C`srand\*(C'\fR
+.ie n .IP "Functions for real @ARRAYs" 4
+.el .IP "Functions for real \f(CW@ARRAYs\fR" 4
+.IX Xref "array"
+.IX Item "Functions for real @ARRAYs"
+\&\f(CW\*(C`pop\*(C'\fR, \f(CW\*(C`push\*(C'\fR, \f(CW\*(C`shift\*(C'\fR, \f(CW\*(C`splice\*(C'\fR, \f(CW\*(C`unshift\*(C'\fR
+.IP "Functions for list data" 4
+.IX Xref "list"
+.IX Item "Functions for list data"
+\&\f(CW\*(C`grep\*(C'\fR, \f(CW\*(C`join\*(C'\fR, \f(CW\*(C`map\*(C'\fR, \f(CW\*(C`qw/STRING/\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR, \f(CW\*(C`sort\*(C'\fR, \f(CW\*(C`unpack\*(C'\fR
+.ie n .IP "Functions for real %HASHes" 4
+.el .IP "Functions for real \f(CW%HASHes\fR" 4
+.IX Xref "hash"
+.IX Item "Functions for real %HASHes"
+\&\f(CW\*(C`delete\*(C'\fR, \f(CW\*(C`each\*(C'\fR, \f(CW\*(C`exists\*(C'\fR, \f(CW\*(C`keys\*(C'\fR, \f(CW\*(C`values\*(C'\fR
+.IP "Input and output functions" 4
+.IX Xref "I O input output dbm"
+.IX Item "Input and output functions"
+\&\f(CW\*(C`binmode\*(C'\fR, \f(CW\*(C`close\*(C'\fR, \f(CW\*(C`closedir\*(C'\fR, \f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`eof\*(C'\fR,
+\&\f(CW\*(C`fileno\*(C'\fR, \f(CW\*(C`flock\*(C'\fR, \f(CW\*(C`format\*(C'\fR, \f(CW\*(C`getc\*(C'\fR, \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`printf\*(C'\fR, \f(CW\*(C`read\*(C'\fR,
+\&\f(CW\*(C`readdir\*(C'\fR, \f(CW\*(C`rewinddir\*(C'\fR, \f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`seekdir\*(C'\fR, \f(CW\*(C`select\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR,
+\&\f(CW\*(C`sysread\*(C'\fR, \f(CW\*(C`sysseek\*(C'\fR, \f(CW\*(C`syswrite\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, \f(CW\*(C`telldir\*(C'\fR, \f(CW\*(C`truncate\*(C'\fR,
+\&\f(CW\*(C`warn\*(C'\fR, \f(CW\*(C`write\*(C'\fR
+.IP "Functions for fixed length data or records" 4
+.IX Item "Functions for fixed length data or records"
+\&\f(CW\*(C`pack\*(C'\fR, \f(CW\*(C`read\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR, \f(CW\*(C`sysread\*(C'\fR, \f(CW\*(C`syswrite\*(C'\fR, \f(CW\*(C`unpack\*(C'\fR, \f(CW\*(C`vec\*(C'\fR
+.IP "Functions for filehandles, files, or directories" 4
+.IX Xref "file filehandle directory pipe link symlink"
+.IX Item "Functions for filehandles, files, or directories"
+\&\f(CW\*(C`\-\f(CIX\f(CW\*(C'\fR, \f(CW\*(C`chdir\*(C'\fR, \f(CW\*(C`chmod\*(C'\fR, \f(CW\*(C`chown\*(C'\fR, \f(CW\*(C`chroot\*(C'\fR, \f(CW\*(C`fcntl\*(C'\fR, \f(CW\*(C`glob\*(C'\fR,
+\&\f(CW\*(C`ioctl\*(C'\fR, \f(CW\*(C`link\*(C'\fR, \f(CW\*(C`lstat\*(C'\fR, \f(CW\*(C`mkdir\*(C'\fR, \f(CW\*(C`open\*(C'\fR, \f(CW\*(C`opendir\*(C'\fR,
+\&\f(CW\*(C`readlink\*(C'\fR, \f(CW\*(C`rename\*(C'\fR, \f(CW\*(C`rmdir\*(C'\fR, \f(CW\*(C`stat\*(C'\fR, \f(CW\*(C`symlink\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR,
+\&\f(CW\*(C`umask\*(C'\fR, \f(CW\*(C`unlink\*(C'\fR, \f(CW\*(C`utime\*(C'\fR
+.IP "Keywords related to the control flow of your Perl program" 4
+.IX Xref "control flow"
+.IX Item "Keywords related to the control flow of your Perl program"
+\&\f(CW\*(C`caller\*(C'\fR, \f(CW\*(C`continue\*(C'\fR, \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`do\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`eval\*(C'\fR, \f(CW\*(C`exit\*(C'\fR,
+\&\f(CW\*(C`goto\*(C'\fR, \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, \f(CW\*(C`redo\*(C'\fR, \f(CW\*(C`return\*(C'\fR, \f(CW\*(C`sub\*(C'\fR, \f(CW\*(C`wantarray\*(C'\fR
+.IP "Keywords related to scoping" 4
+.IX Item "Keywords related to scoping"
+\&\f(CW\*(C`caller\*(C'\fR, \f(CW\*(C`import\*(C'\fR, \f(CW\*(C`local\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "Miscellaneous functions" 4
+.IX Item "Miscellaneous functions"
+\&\f(CW\*(C`defined\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`eval\*(C'\fR, \f(CW\*(C`formline\*(C'\fR, \f(CW\*(C`local\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`reset\*(C'\fR,
+\&\f(CW\*(C`scalar\*(C'\fR, \f(CW\*(C`undef\*(C'\fR, \f(CW\*(C`wantarray\*(C'\fR
+.IP "Functions for processes and process groups" 4
+.IX Xref "process pid process id"
+.IX Item "Functions for processes and process groups"
+\&\f(CW\*(C`alarm\*(C'\fR, \f(CW\*(C`exec\*(C'\fR, \f(CW\*(C`fork\*(C'\fR, \f(CW\*(C`getpgrp\*(C'\fR, \f(CW\*(C`getppid\*(C'\fR, \f(CW\*(C`getpriority\*(C'\fR, \f(CW\*(C`kill\*(C'\fR,
+\&\f(CW\*(C`pipe\*(C'\fR, \f(CW\*(C`qx/STRING/\*(C'\fR, \f(CW\*(C`setpgrp\*(C'\fR, \f(CW\*(C`setpriority\*(C'\fR, \f(CW\*(C`sleep\*(C'\fR, \f(CW\*(C`system\*(C'\fR,
+\&\f(CW\*(C`times\*(C'\fR, \f(CW\*(C`wait\*(C'\fR, \f(CW\*(C`waitpid\*(C'\fR
+.IP "Keywords related to perl modules" 4
+.IX Xref "module"
+.IX Item "Keywords related to perl modules"
+\&\f(CW\*(C`do\*(C'\fR, \f(CW\*(C`import\*(C'\fR, \f(CW\*(C`no\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`require\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "Keywords related to classes and object-orientedness" 4
+.IX Xref "object class package"
+.IX Item "Keywords related to classes and object-orientedness"
+\&\f(CW\*(C`bless\*(C'\fR, \f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`ref\*(C'\fR, \f(CW\*(C`tie\*(C'\fR, \f(CW\*(C`tied\*(C'\fR,
+\&\f(CW\*(C`untie\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "Low-level socket functions" 4
+.IX Xref "socket sock"
+.IX Item "Low-level socket functions"
+\&\f(CW\*(C`accept\*(C'\fR, \f(CW\*(C`bind\*(C'\fR, \f(CW\*(C`connect\*(C'\fR, \f(CW\*(C`getpeername\*(C'\fR, \f(CW\*(C`getsockname\*(C'\fR,
+\&\f(CW\*(C`getsockopt\*(C'\fR, \f(CW\*(C`listen\*(C'\fR, \f(CW\*(C`recv\*(C'\fR, \f(CW\*(C`send\*(C'\fR, \f(CW\*(C`setsockopt\*(C'\fR, \f(CW\*(C`shutdown\*(C'\fR,
+\&\f(CW\*(C`socket\*(C'\fR, \f(CW\*(C`socketpair\*(C'\fR
+.IP "System V interprocess communication functions" 4
+.IX Xref "IPC System V semaphore shared memory memory message"
+.IX Item "System V interprocess communication functions"
+\&\f(CW\*(C`msgctl\*(C'\fR, \f(CW\*(C`msgget\*(C'\fR, \f(CW\*(C`msgrcv\*(C'\fR, \f(CW\*(C`msgsnd\*(C'\fR, \f(CW\*(C`semctl\*(C'\fR, \f(CW\*(C`semget\*(C'\fR, \f(CW\*(C`semop\*(C'\fR,
+\&\f(CW\*(C`shmctl\*(C'\fR, \f(CW\*(C`shmget\*(C'\fR, \f(CW\*(C`shmread\*(C'\fR, \f(CW\*(C`shmwrite\*(C'\fR
+.IP "Fetching user and group info" 4
+.IX Xref "user group password uid gid passwd etc passwd"
+.IX Item "Fetching user and group info"
+\&\f(CW\*(C`endgrent\*(C'\fR, \f(CW\*(C`endhostent\*(C'\fR, \f(CW\*(C`endnetent\*(C'\fR, \f(CW\*(C`endpwent\*(C'\fR, \f(CW\*(C`getgrent\*(C'\fR,
+\&\f(CW\*(C`getgrgid\*(C'\fR, \f(CW\*(C`getgrnam\*(C'\fR, \f(CW\*(C`getlogin\*(C'\fR, \f(CW\*(C`getpwent\*(C'\fR, \f(CW\*(C`getpwnam\*(C'\fR,
+\&\f(CW\*(C`getpwuid\*(C'\fR, \f(CW\*(C`setgrent\*(C'\fR, \f(CW\*(C`setpwent\*(C'\fR
+.IP "Fetching network info" 4
+.IX Xref "network protocol host hostname IP address service"
+.IX Item "Fetching network info"
+\&\f(CW\*(C`endprotoent\*(C'\fR, \f(CW\*(C`endservent\*(C'\fR, \f(CW\*(C`gethostbyaddr\*(C'\fR, \f(CW\*(C`gethostbyname\*(C'\fR,
+\&\f(CW\*(C`gethostent\*(C'\fR, \f(CW\*(C`getnetbyaddr\*(C'\fR, \f(CW\*(C`getnetbyname\*(C'\fR, \f(CW\*(C`getnetent\*(C'\fR,
+\&\f(CW\*(C`getprotobyname\*(C'\fR, \f(CW\*(C`getprotobynumber\*(C'\fR, \f(CW\*(C`getprotoent\*(C'\fR,
+\&\f(CW\*(C`getservbyname\*(C'\fR, \f(CW\*(C`getservbyport\*(C'\fR, \f(CW\*(C`getservent\*(C'\fR, \f(CW\*(C`sethostent\*(C'\fR,
+\&\f(CW\*(C`setnetent\*(C'\fR, \f(CW\*(C`setprotoent\*(C'\fR, \f(CW\*(C`setservent\*(C'\fR
+.IP "Time-related functions" 4
+.IX Xref "time date"
+.IX Item "Time-related functions"
+\&\f(CW\*(C`gmtime\*(C'\fR, \f(CW\*(C`localtime\*(C'\fR, \f(CW\*(C`time\*(C'\fR, \f(CW\*(C`times\*(C'\fR
+.IP "Functions new in perl5" 4
+.IX Xref "perl5"
+.IX Item "Functions new in perl5"
+\&\f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`bless\*(C'\fR, \f(CW\*(C`chomp\*(C'\fR, \f(CW\*(C`chr\*(C'\fR, \f(CW\*(C`exists\*(C'\fR, \f(CW\*(C`formline\*(C'\fR, \f(CW\*(C`glob\*(C'\fR,
+\&\f(CW\*(C`import\*(C'\fR, \f(CW\*(C`lc\*(C'\fR, \f(CW\*(C`lcfirst\*(C'\fR, \f(CW\*(C`map\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`no\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`prototype\*(C'\fR,
+\&\f(CW\*(C`qx\*(C'\fR, \f(CW\*(C`qw\*(C'\fR, \f(CW\*(C`readline\*(C'\fR, \f(CW\*(C`readpipe\*(C'\fR, \f(CW\*(C`ref\*(C'\fR, \f(CW\*(C`sub*\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR, \f(CW\*(C`tie\*(C'\fR,
+\&\f(CW\*(C`tied\*(C'\fR, \f(CW\*(C`uc\*(C'\fR, \f(CW\*(C`ucfirst\*(C'\fR, \f(CW\*(C`untie\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.Sp
+* \- \f(CW\*(C`sub\*(C'\fR was a keyword in perl4, but in perl5 it is an
+operator, which can be used in expressions.
+.IP "Functions obsoleted in perl5" 4
+.IX Item "Functions obsoleted in perl5"
+\&\f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR
+.Sh "Portability"
+.IX Xref "portability Unix portable"
+.IX Subsection "Portability"
+Perl was born in Unix and can therefore access all common Unix
+system calls. In non-Unix environments, the functionality of some
+Unix system calls may not be available, or details of the available
+functionality may differ slightly. The Perl functions affected
+by this are:
+.PP
+\&\f(CW\*(C`\-X\*(C'\fR, \f(CW\*(C`binmode\*(C'\fR, \f(CW\*(C`chmod\*(C'\fR, \f(CW\*(C`chown\*(C'\fR, \f(CW\*(C`chroot\*(C'\fR, \f(CW\*(C`crypt\*(C'\fR,
+\&\f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`endgrent\*(C'\fR, \f(CW\*(C`endhostent\*(C'\fR,
+\&\f(CW\*(C`endnetent\*(C'\fR, \f(CW\*(C`endprotoent\*(C'\fR, \f(CW\*(C`endpwent\*(C'\fR, \f(CW\*(C`endservent\*(C'\fR, \f(CW\*(C`exec\*(C'\fR,
+\&\f(CW\*(C`fcntl\*(C'\fR, \f(CW\*(C`flock\*(C'\fR, \f(CW\*(C`fork\*(C'\fR, \f(CW\*(C`getgrent\*(C'\fR, \f(CW\*(C`getgrgid\*(C'\fR, \f(CW\*(C`gethostbyname\*(C'\fR,
+\&\f(CW\*(C`gethostent\*(C'\fR, \f(CW\*(C`getlogin\*(C'\fR, \f(CW\*(C`getnetbyaddr\*(C'\fR, \f(CW\*(C`getnetbyname\*(C'\fR, \f(CW\*(C`getnetent\*(C'\fR,
+\&\f(CW\*(C`getppid\*(C'\fR, \f(CW\*(C`getpgrp\*(C'\fR, \f(CW\*(C`getpriority\*(C'\fR, \f(CW\*(C`getprotobynumber\*(C'\fR,
+\&\f(CW\*(C`getprotoent\*(C'\fR, \f(CW\*(C`getpwent\*(C'\fR, \f(CW\*(C`getpwnam\*(C'\fR, \f(CW\*(C`getpwuid\*(C'\fR,
+\&\f(CW\*(C`getservbyport\*(C'\fR, \f(CW\*(C`getservent\*(C'\fR, \f(CW\*(C`getsockopt\*(C'\fR, \f(CW\*(C`glob\*(C'\fR, \f(CW\*(C`ioctl\*(C'\fR,
+\&\f(CW\*(C`kill\*(C'\fR, \f(CW\*(C`link\*(C'\fR, \f(CW\*(C`lstat\*(C'\fR, \f(CW\*(C`msgctl\*(C'\fR, \f(CW\*(C`msgget\*(C'\fR, \f(CW\*(C`msgrcv\*(C'\fR,
+\&\f(CW\*(C`msgsnd\*(C'\fR, \f(CW\*(C`open\*(C'\fR, \f(CW\*(C`pipe\*(C'\fR, \f(CW\*(C`readlink\*(C'\fR, \f(CW\*(C`rename\*(C'\fR, \f(CW\*(C`select\*(C'\fR, \f(CW\*(C`semctl\*(C'\fR,
+\&\f(CW\*(C`semget\*(C'\fR, \f(CW\*(C`semop\*(C'\fR, \f(CW\*(C`setgrent\*(C'\fR, \f(CW\*(C`sethostent\*(C'\fR, \f(CW\*(C`setnetent\*(C'\fR,
+\&\f(CW\*(C`setpgrp\*(C'\fR, \f(CW\*(C`setpriority\*(C'\fR, \f(CW\*(C`setprotoent\*(C'\fR, \f(CW\*(C`setpwent\*(C'\fR,
+\&\f(CW\*(C`setservent\*(C'\fR, \f(CW\*(C`setsockopt\*(C'\fR, \f(CW\*(C`shmctl\*(C'\fR, \f(CW\*(C`shmget\*(C'\fR, \f(CW\*(C`shmread\*(C'\fR,
+\&\f(CW\*(C`shmwrite\*(C'\fR, \f(CW\*(C`socket\*(C'\fR, \f(CW\*(C`socketpair\*(C'\fR,
+\&\f(CW\*(C`stat\*(C'\fR, \f(CW\*(C`symlink\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR, \f(CW\*(C`system\*(C'\fR,
+\&\f(CW\*(C`times\*(C'\fR, \f(CW\*(C`truncate\*(C'\fR, \f(CW\*(C`umask\*(C'\fR, \f(CW\*(C`unlink\*(C'\fR,
+\&\f(CW\*(C`utime\*(C'\fR, \f(CW\*(C`wait\*(C'\fR, \f(CW\*(C`waitpid\*(C'\fR
+.PP
+For more information about the portability of these functions, see
+perlport and other available platform-specific documentation.
+.Sh "Alphabetical Listing of Perl Functions"
+.IX Subsection "Alphabetical Listing of Perl Functions"
+.IP "\-X \s-1FILEHANDLE\s0" 8
+.IX Xref "-r -w -x -o -R -W -X -O -e -z -s -f -d -l -p -S -b -c -t -u -g -k -T -B -M -A -C"
+.IX Item "-X FILEHANDLE"
+.PD 0
+.IP "\-X \s-1EXPR\s0" 8
+.IX Item "-X EXPR"
+.IP "\-X" 8
+.IX Item "-X"
+.PD
+A file test, where X is one of the letters listed below. This unary
+operator takes one argument, either a filename or a filehandle, and
+tests the associated file to see if something is true about it. If the
+argument is omitted, tests \f(CW$_\fR, except for \f(CW\*(C`\-t\*(C'\fR, which tests \s-1STDIN\s0.
+Unless otherwise documented, it returns \f(CW1\fR for true and \f(CW''\fR for false, or
+the undefined value if the file doesn't exist. Despite the funny
+names, precedence is the same as any other named unary operator, and
+the argument may be parenthesized like any other unary operator. The
+operator may be any of:
+.Sp
+.Vb 4
+\& -r File is readable by effective uid/gid.
+\& -w File is writable by effective uid/gid.
+\& -x File is executable by effective uid/gid.
+\& -o File is owned by effective uid.
+.Ve
+.Sp
+.Vb 4
+\& -R File is readable by real uid/gid.
+\& -W File is writable by real uid/gid.
+\& -X File is executable by real uid/gid.
+\& -O File is owned by real uid.
+.Ve
+.Sp
+.Vb 3
+\& -e File exists.
+\& -z File has zero size (is empty).
+\& -s File has nonzero size (returns size in bytes).
+.Ve
+.Sp
+.Vb 8
+\& -f File is a plain file.
+\& -d File is a directory.
+\& -l File is a symbolic link.
+\& -p File is a named pipe (FIFO), or Filehandle is a pipe.
+\& -S File is a socket.
+\& -b File is a block special file.
+\& -c File is a character special file.
+\& -t Filehandle is opened to a tty.
+.Ve
+.Sp
+.Vb 3
+\& -u File has setuid bit set.
+\& -g File has setgid bit set.
+\& -k File has sticky bit set.
+.Ve
+.Sp
+.Vb 2
+\& -T File is an ASCII text file (heuristic guess).
+\& -B File is a "binary" file (opposite of -T).
+.Ve
+.Sp
+.Vb 3
+\& -M Script start time minus file modification time, in days.
+\& -A Same for access time.
+\& -C Same for inode change time (Unix, may differ for other platforms)
+.Ve
+.Sp
+Example:
+.Sp
+.Vb 5
+\& while (<>) {
+\& chomp;
+\& next unless -f $_; # ignore specials
+\& #...
+\& }
+.Ve
+.Sp
+The interpretation of the file permission operators \f(CW\*(C`\-r\*(C'\fR, \f(CW\*(C`\-R\*(C'\fR,
+\&\f(CW\*(C`\-w\*(C'\fR, \f(CW\*(C`\-W\*(C'\fR, \f(CW\*(C`\-x\*(C'\fR, and \f(CW\*(C`\-X\*(C'\fR is by default based solely on the mode
+of the file and the uids and gids of the user. There may be other
+reasons you can't actually read, write, or execute the file. Such
+reasons may be for example network filesystem access controls, ACLs
+(access control lists), read-only filesystems, and unrecognized
+executable formats.
+.Sp
+Also note that, for the superuser on the local filesystems, the \f(CW\*(C`\-r\*(C'\fR,
+\&\f(CW\*(C`\-R\*(C'\fR, \f(CW\*(C`\-w\*(C'\fR, and \f(CW\*(C`\-W\*(C'\fR tests always return 1, and \f(CW\*(C`\-x\*(C'\fR and \f(CW\*(C`\-X\*(C'\fR return 1
+if any execute bit is set in the mode. Scripts run by the superuser
+may thus need to do a \fIstat()\fR to determine the actual mode of the file,
+or temporarily set their effective uid to something else.
+.Sp
+If you are using ACLs, there is a pragma called \f(CW\*(C`filetest\*(C'\fR that may
+produce more accurate results than the bare \fIstat()\fR mode bits.
+When under the \f(CW\*(C`use filetest 'access'\*(C'\fR the above-mentioned filetests
+will test whether the permission can (not) be granted using the
+\&\fIaccess()\fR family of system calls. Also note that the \f(CW\*(C`\-x\*(C'\fR and \f(CW\*(C`\-X\*(C'\fR may
+under this pragma return true even if there are no execute permission
+bits set (nor any extra execute permission ACLs). This strangeness is
+due to the underlying system calls' definitions. Read the
+documentation for the \f(CW\*(C`filetest\*(C'\fR pragma for more information.
+.Sp
+Note that \f(CW\*(C`\-s/a/b/\*(C'\fR does not do a negated substitution. Saying
+\&\f(CW\*(C`\-exp($foo)\*(C'\fR still works as expected, however\*(--only single letters
+following a minus are interpreted as file tests.
+.Sp
+The \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR switches work as follows. The first block or so of the
+file is examined for odd characters such as strange control codes or
+characters with the high bit set. If too many strange characters (>30%)
+are found, it's a \f(CW\*(C`\-B\*(C'\fR file; otherwise it's a \f(CW\*(C`\-T\*(C'\fR file. Also, any file
+containing null in the first block is considered a binary file. If \f(CW\*(C`\-T\*(C'\fR
+or \f(CW\*(C`\-B\*(C'\fR is used on a filehandle, the current \s-1IO\s0 buffer is examined
+rather than the first block. Both \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR return true on a null
+file, or a file at \s-1EOF\s0 when testing a filehandle. Because you have to
+read a file to do the \f(CW\*(C`\-T\*(C'\fR test, on most occasions you want to use a \f(CW\*(C`\-f\*(C'\fR
+against the file first, as in \f(CW\*(C`next unless \-f $file && \-T $file\*(C'\fR.
+.Sp
+If any of the file tests (or either the \f(CW\*(C`stat\*(C'\fR or \f(CW\*(C`lstat\*(C'\fR operators) are given
+the special filehandle consisting of a solitary underline, then the stat
+structure of the previous file test (or stat operator) is used, saving
+a system call. (This doesn't work with \f(CW\*(C`\-t\*(C'\fR, and you need to remember
+that \fIlstat()\fR and \f(CW\*(C`\-l\*(C'\fR will leave values in the stat structure for the
+symbolic link, not the real file.) (Also, if the stat buffer was filled by
+an \f(CW\*(C`lstat\*(C'\fR call, \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR will reset it with the results of \f(CW\*(C`stat _\*(C'\fR).
+Example:
+.Sp
+.Vb 1
+\& print "Can do.\en" if -r $a || -w _ || -x _;
+.Ve
+.Sp
+.Vb 9
+\& stat($filename);
+\& print "Readable\en" if -r _;
+\& print "Writable\en" if -w _;
+\& print "Executable\en" if -x _;
+\& print "Setuid\en" if -u _;
+\& print "Setgid\en" if -g _;
+\& print "Sticky\en" if -k _;
+\& print "Text\en" if -T _;
+\& print "Binary\en" if -B _;
+.Ve
+.IP "abs \s-1VALUE\s0" 8
+.IX Xref "abs absolute"
+.IX Item "abs VALUE"
+.PD 0
+.IP "abs" 8
+.IX Item "abs"
+.PD
+Returns the absolute value of its argument.
+If \s-1VALUE\s0 is omitted, uses \f(CW$_\fR.
+.IP "accept \s-1NEWSOCKET\s0,GENERICSOCKET" 8
+.IX Xref "accept"
+.IX Item "accept NEWSOCKET,GENERICSOCKET"
+Accepts an incoming socket connect, just as the \fIaccept\fR\|(2) system call
+does. Returns the packed address if it succeeded, false otherwise.
+See the example in \*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor, as determined by the
+value of $^F. See \*(L"$^F\*(R" in perlvar.
+.IP "alarm \s-1SECONDS\s0" 8
+.IX Xref "alarm SIGALRM timer"
+.IX Item "alarm SECONDS"
+.PD 0
+.IP "alarm" 8
+.IX Item "alarm"
+.PD
+Arranges to have a \s-1SIGALRM\s0 delivered to this process after the
+specified number of wallclock seconds has elapsed. If \s-1SECONDS\s0 is not
+specified, the value stored in \f(CW$_\fR is used. (On some machines,
+unfortunately, the elapsed time may be up to one second less or more
+than you specified because of how seconds are counted, and process
+scheduling may delay the delivery of the signal even further.)
+.Sp
+Only one timer may be counting at once. Each call disables the
+previous timer, and an argument of \f(CW0\fR may be supplied to cancel the
+previous timer without starting a new one. The returned value is the
+amount of time remaining on the previous timer.
+.Sp
+For delays of finer granularity than one second, you may use Perl's
+four-argument version of \fIselect()\fR leaving the first three arguments
+undefined, or you might be able to use the \f(CW\*(C`syscall\*(C'\fR interface to
+access \fIsetitimer\fR\|(2) if your system supports it. The Time::HiRes
+module (from \s-1CPAN\s0, and starting from Perl 5.8 part of the standard
+distribution) may also prove useful.
+.Sp
+It is usually a mistake to intermix \f(CW\*(C`alarm\*(C'\fR and \f(CW\*(C`sleep\*(C'\fR calls.
+(\f(CW\*(C`sleep\*(C'\fR may be internally implemented in your system with \f(CW\*(C`alarm\*(C'\fR)
+.Sp
+If you want to use \f(CW\*(C`alarm\*(C'\fR to time out a system call you need to use an
+\&\f(CW\*(C`eval\*(C'\fR/\f(CW\*(C`die\*(C'\fR pair. You can't rely on the alarm causing the system call to
+fail with \f(CW$!\fR set to \f(CW\*(C`EINTR\*(C'\fR because Perl sets up signal handlers to
+restart system calls on some systems. Using \f(CW\*(C`eval\*(C'\fR/\f(CW\*(C`die\*(C'\fR always works,
+modulo the caveats given in \*(L"Signals\*(R" in perlipc.
+.Sp
+.Vb 13
+\& eval {
+\& local $SIG{ALRM} = sub { die "alarm\en" }; # NB: \en required
+\& alarm $timeout;
+\& $nread = sysread SOCKET, $buffer, $size;
+\& alarm 0;
+\& };
+\& if ($@) {
+\& die unless $@ eq "alarm\en"; # propagate unexpected errors
+\& # timed out
+\& }
+\& else {
+\& # didn't
+\& }
+.Ve
+.Sp
+For more information see perlipc.
+.IP "atan2 Y,X" 8
+.IX Xref "atan2 arctangent tan tangent"
+.IX Item "atan2 Y,X"
+Returns the arctangent of Y/X in the range \-PI to \s-1PI\s0.
+.Sp
+For the tangent operation, you may use the \f(CW\*(C`Math::Trig::tan\*(C'\fR
+function, or use the familiar relation:
+.Sp
+.Vb 1
+\& sub tan { sin($_[0]) / cos($_[0]) }
+.Ve
+.Sp
+Note that atan2(0, 0) is not well\-defined.
+.IP "bind \s-1SOCKET\s0,NAME" 8
+.IX Xref "bind"
+.IX Item "bind SOCKET,NAME"
+Binds a network address to a socket, just as the bind system call
+does. Returns true if it succeeded, false otherwise. \s-1NAME\s0 should be a
+packed address of the appropriate type for the socket. See the examples in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.IP "binmode \s-1FILEHANDLE\s0, \s-1LAYER\s0" 8
+.IX Xref "binmode binary text DOS Windows"
+.IX Item "binmode FILEHANDLE, LAYER"
+.PD 0
+.IP "binmode \s-1FILEHANDLE\s0" 8
+.IX Item "binmode FILEHANDLE"
+.PD
+Arranges for \s-1FILEHANDLE\s0 to be read or written in \*(L"binary\*(R" or \*(L"text\*(R"
+mode on systems where the run-time libraries distinguish between
+binary and text files. If \s-1FILEHANDLE\s0 is an expression, the value is
+taken as the name of the filehandle. Returns true on success,
+otherwise it returns \f(CW\*(C`undef\*(C'\fR and sets \f(CW$!\fR (errno).
+.Sp
+On some systems (in general, \s-1DOS\s0 and Windows-based systems) \fIbinmode()\fR
+is necessary when you're not working with a text file. For the sake
+of portability it is a good idea to always use it when appropriate,
+and to never use it when it isn't appropriate. Also, people can
+set their I/O to be by default \s-1UTF\-8\s0 encoded Unicode, not bytes.
+.Sp
+In other words: regardless of platform, use \fIbinmode()\fR on binary data,
+like for example images.
+.Sp
+If \s-1LAYER\s0 is present it is a single string, but may contain multiple
+directives. The directives alter the behaviour of the file handle.
+When \s-1LAYER\s0 is present using binmode on text file makes sense.
+.Sp
+If \s-1LAYER\s0 is omitted or specified as \f(CW\*(C`:raw\*(C'\fR the filehandle is made
+suitable for passing binary data. This includes turning off possible \s-1CRLF\s0
+translation and marking it as bytes (as opposed to Unicode characters).
+Note that, despite what may be implied in \fI\*(L"Programming Perl\*(R"\fR (the
+Camel) or elsewhere, \f(CW\*(C`:raw\*(C'\fR is \fInot\fR the simply inverse of \f(CW\*(C`:crlf\*(C'\fR
+\&\*(-- other layers which would affect binary nature of the stream are
+\&\fIalso\fR disabled. See PerlIO, perlrun and the discussion about the
+\&\s-1PERLIO\s0 environment variable.
+.Sp
+The \f(CW\*(C`:bytes\*(C'\fR, \f(CW\*(C`:crlf\*(C'\fR, and \f(CW\*(C`:utf8\*(C'\fR, and any other directives of the
+form \f(CW\*(C`:...\*(C'\fR, are called I/O \fIlayers\fR. The \f(CW\*(C`open\*(C'\fR pragma can be used to
+establish default I/O layers. See open.
+.Sp
+\&\fIThe \s-1LAYER\s0 parameter of the \fIbinmode()\fI function is described as \*(L"\s-1DISCIPLINE\s0\*(R"
+in \*(L"Programming Perl, 3rd Edition\*(R". However, since the publishing of this
+book, by many known as \*(L"Camel \s-1III\s0\*(R", the consensus of the naming of this
+functionality has moved from \*(L"discipline\*(R" to \*(L"layer\*(R". All documentation
+of this version of Perl therefore refers to \*(L"layers\*(R" rather than to
+\&\*(L"disciplines\*(R". Now back to the regularly scheduled documentation...\fR
+.Sp
+To mark \s-1FILEHANDLE\s0 as \s-1UTF\-8\s0, use \f(CW\*(C`:utf8\*(C'\fR.
+.Sp
+In general, \fIbinmode()\fR should be called after \fIopen()\fR but before any I/O
+is done on the filehandle. Calling \fIbinmode()\fR will normally flush any
+pending buffered output data (and perhaps pending input data) on the
+handle. An exception to this is the \f(CW\*(C`:encoding\*(C'\fR layer that
+changes the default character encoding of the handle, see open.
+The \f(CW\*(C`:encoding\*(C'\fR layer sometimes needs to be called in
+mid\-stream, and it doesn't flush the stream. The \f(CW\*(C`:encoding\*(C'\fR
+also implicitly pushes on top of itself the \f(CW\*(C`:utf8\*(C'\fR layer because
+internally Perl will operate on \s-1UTF\-8\s0 encoded Unicode characters.
+.Sp
+The operating system, device drivers, C libraries, and Perl run-time
+system all work together to let the programmer treat a single
+character (\f(CW\*(C`\en\*(C'\fR) as the line terminator, irrespective of the external
+representation. On many operating systems, the native text file
+representation matches the internal representation, but on some
+platforms the external representation of \f(CW\*(C`\en\*(C'\fR is made up of more than
+one character.
+.Sp
+Mac \s-1OS\s0, all variants of Unix, and Stream_LF files on \s-1VMS\s0 use a single
+character to end each line in the external representation of text (even
+though that single character is \s-1CARRIAGE\s0 \s-1RETURN\s0 on Mac \s-1OS\s0 and \s-1LINE\s0 \s-1FEED\s0
+on Unix and most \s-1VMS\s0 files). In other systems like \s-1OS/2\s0, \s-1DOS\s0 and the
+various flavors of MS-Windows your program sees a \f(CW\*(C`\en\*(C'\fR as a simple \f(CW\*(C`\ecJ\*(C'\fR,
+but what's stored in text files are the two characters \f(CW\*(C`\ecM\ecJ\*(C'\fR. That
+means that, if you don't use \fIbinmode()\fR on these systems, \f(CW\*(C`\ecM\ecJ\*(C'\fR
+sequences on disk will be converted to \f(CW\*(C`\en\*(C'\fR on input, and any \f(CW\*(C`\en\*(C'\fR in
+your program will be converted back to \f(CW\*(C`\ecM\ecJ\*(C'\fR on output. This is what
+you want for text files, but it can be disastrous for binary files.
+.Sp
+Another consequence of using \fIbinmode()\fR (on some systems) is that
+special end-of-file markers will be seen as part of the data stream.
+For systems from the Microsoft family this means that if your binary
+data contains \f(CW\*(C`\ecZ\*(C'\fR, the I/O subsystem will regard it as the end of
+the file, unless you use \fIbinmode()\fR.
+.Sp
+\&\fIbinmode()\fR is not only important for \fIreadline()\fR and \fIprint()\fR operations,
+but also when using \fIread()\fR, \fIseek()\fR, \fIsysread()\fR, \fIsyswrite()\fR and \fItell()\fR
+(see perlport for more details). See the \f(CW$/\fR and \f(CW\*(C`$\e\*(C'\fR variables
+in perlvar for how to manually set your input and output
+line-termination sequences.
+.IP "bless \s-1REF\s0,CLASSNAME" 8
+.IX Xref "bless"
+.IX Item "bless REF,CLASSNAME"
+.PD 0
+.IP "bless \s-1REF\s0" 8
+.IX Item "bless REF"
+.PD
+This function tells the thingy referenced by \s-1REF\s0 that it is now an object
+in the \s-1CLASSNAME\s0 package. If \s-1CLASSNAME\s0 is omitted, the current package
+is used. Because a \f(CW\*(C`bless\*(C'\fR is often the last thing in a constructor,
+it returns the reference for convenience. Always use the two-argument
+version if a derived class might inherit the function doing the blessing.
+See perltoot and perlobj for more about the blessing (and blessings)
+of objects.
+.Sp
+Consider always blessing objects in CLASSNAMEs that are mixed case.
+Namespaces with all lowercase names are considered reserved for
+Perl pragmata. Builtin types have all uppercase names. To prevent
+confusion, you may wish to avoid such package names as well. Make sure
+that \s-1CLASSNAME\s0 is a true value.
+.Sp
+See \*(L"Perl Modules\*(R" in perlmod.
+.IP "caller \s-1EXPR\s0" 8
+.IX Xref "caller call stack stack stack trace"
+.IX Item "caller EXPR"
+.PD 0
+.IP "caller" 8
+.IX Item "caller"
+.PD
+Returns the context of the current subroutine call. In scalar context,
+returns the caller's package name if there is a caller, that is, if
+we're in a subroutine or \f(CW\*(C`eval\*(C'\fR or \f(CW\*(C`require\*(C'\fR, and the undefined value
+otherwise. In list context, returns
+.Sp
+.Vb 1
+\& ($package, $filename, $line) = caller;
+.Ve
+.Sp
+With \s-1EXPR\s0, it returns some extra information that the debugger uses to
+print a stack trace. The value of \s-1EXPR\s0 indicates how many call frames
+to go back before the current one.
+.Sp
+.Vb 2
+\& ($package, $filename, $line, $subroutine, $hasargs,
+\& $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller($i);
+.Ve
+.Sp
+Here \f(CW$subroutine\fR may be \f(CW\*(C`(eval)\*(C'\fR if the frame is not a subroutine
+call, but an \f(CW\*(C`eval\*(C'\fR. In such a case additional elements \f(CW$evaltext\fR and
+\&\f(CW$is_require\fR are set: \f(CW$is_require\fR is true if the frame is created by a
+\&\f(CW\*(C`require\*(C'\fR or \f(CW\*(C`use\*(C'\fR statement, \f(CW$evaltext\fR contains the text of the
+\&\f(CW\*(C`eval EXPR\*(C'\fR statement. In particular, for an \f(CW\*(C`eval BLOCK\*(C'\fR statement,
+\&\f(CW$filename\fR is \f(CW\*(C`(eval)\*(C'\fR, but \f(CW$evaltext\fR is undefined. (Note also that
+each \f(CW\*(C`use\*(C'\fR statement creates a \f(CW\*(C`require\*(C'\fR frame inside an \f(CW\*(C`eval EXPR\*(C'\fR
+frame.) \f(CW$subroutine\fR may also be \f(CW\*(C`(unknown)\*(C'\fR if this particular
+subroutine happens to have been deleted from the symbol table.
+\&\f(CW$hasargs\fR is true if a new instance of \f(CW@_\fR was set up for the frame.
+\&\f(CW$hints\fR and \f(CW$bitmask\fR contain pragmatic hints that the caller was
+compiled with. The \f(CW$hints\fR and \f(CW$bitmask\fR values are subject to change
+between versions of Perl, and are not meant for external use.
+.Sp
+Furthermore, when called from within the \s-1DB\s0 package, caller returns more
+detailed information: it sets the list variable \f(CW@DB::args\fR to be the
+arguments with which the subroutine was invoked.
+.Sp
+Be aware that the optimizer might have optimized call frames away before
+\&\f(CW\*(C`caller\*(C'\fR had a chance to get the information. That means that \f(CWcaller(N)\fR
+might not return information about the call frame you expect it do, for
+\&\f(CW\*(C`N > 1\*(C'\fR. In particular, \f(CW@DB::args\fR might have information from the
+previous time \f(CW\*(C`caller\*(C'\fR was called.
+.IP "chdir \s-1EXPR\s0" 8
+.IX Xref "chdir cd"
+.IX Item "chdir EXPR"
+.PD 0
+.IP "chdir \s-1FILEHANDLE\s0" 8
+.IX Item "chdir FILEHANDLE"
+.IP "chdir \s-1DIRHANDLE\s0" 8
+.IX Item "chdir DIRHANDLE"
+.IP "chdir" 8
+.IX Item "chdir"
+.PD
+Changes the working directory to \s-1EXPR\s0, if possible. If \s-1EXPR\s0 is omitted,
+changes to the directory specified by \f(CW$ENV{HOME}\fR, if set; if not,
+changes to the directory specified by \f(CW$ENV{LOGDIR}\fR. (Under \s-1VMS\s0, the
+variable \f(CW$ENV{SYS$LOGIN}\fR is also checked, and used if it is set.) If
+neither is set, \f(CW\*(C`chdir\*(C'\fR does nothing. It returns true upon success,
+false otherwise. See the example under \f(CW\*(C`die\*(C'\fR.
+.Sp
+On systems that support fchdir, you might pass a file handle or
+directory handle as argument. On systems that don't support fchdir,
+passing handles produces a fatal error at run time.
+.IP "chmod \s-1LIST\s0" 8
+.IX Xref "chmod permission mode"
+.IX Item "chmod LIST"
+Changes the permissions of a list of files. The first element of the
+list must be the numerical mode, which should probably be an octal
+number, and which definitely should \fInot\fR be a string of octal digits:
+\&\f(CW0644\fR is okay, \f(CW'0644'\fR is not. Returns the number of files
+successfully changed. See also \*(L"oct\*(R", if all you have is a string.
+.Sp
+.Vb 6
+\& $cnt = chmod 0755, 'foo', 'bar';
+\& chmod 0755, @executables;
+\& $mode = '0644'; chmod $mode, 'foo'; # !!! sets mode to
+\& # --w----r-T
+\& $mode = '0644'; chmod oct($mode), 'foo'; # this is better
+\& $mode = 0644; chmod $mode, 'foo'; # this is best
+.Ve
+.Sp
+On systems that support fchmod, you might pass file handles among the
+files. On systems that don't support fchmod, passing file handles
+produces a fatal error at run time.
+.Sp
+.Vb 3
+\& open(my $fh, "<", "foo");
+\& my $perm = (stat $fh)[2] & 07777;
+\& chmod($perm | 0600, $fh);
+.Ve
+.Sp
+You can also import the symbolic \f(CW\*(C`S_I*\*(C'\fR constants from the Fcntl
+module:
+.Sp
+.Vb 1
+\& use Fcntl ':mode';
+.Ve
+.Sp
+.Vb 2
+\& chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
+\& # This is identical to the chmod 0755 of the above example.
+.Ve
+.IP "chomp \s-1VARIABLE\s0" 8
+.IX Xref "chomp INPUT_RECORD_SEPARATOR $ newline eol"
+.IX Item "chomp VARIABLE"
+.PD 0
+.IP "chomp( \s-1LIST\s0 )" 8
+.IX Item "chomp( LIST )"
+.IP "chomp" 8
+.IX Item "chomp"
+.PD
+This safer version of \*(L"chop\*(R" removes any trailing string
+that corresponds to the current value of \f(CW$/\fR (also known as
+\&\f(CW$INPUT_RECORD_SEPARATOR\fR in the \f(CW\*(C`English\*(C'\fR module). It returns the total
+number of characters removed from all its arguments. It's often used to
+remove the newline from the end of an input record when you're worried
+that the final record may be missing its newline. When in paragraph
+mode (\f(CW\*(C`$/ = ""\*(C'\fR), it removes all trailing newlines from the string.
+When in slurp mode (\f(CW\*(C`$/ = undef\*(C'\fR) or fixed-length record mode (\f(CW$/\fR is
+a reference to an integer or the like, see perlvar) \fIchomp()\fR won't
+remove anything.
+If \s-1VARIABLE\s0 is omitted, it chomps \f(CW$_\fR. Example:
+.Sp
+.Vb 5
+\& while (<>) {
+\& chomp; # avoid \en on last field
+\& @array = split(/:/);
+\& # ...
+\& }
+.Ve
+.Sp
+If \s-1VARIABLE\s0 is a hash, it chomps the hash's values, but not its keys.
+.Sp
+
+
+---tokens---
+'.' Punctuation
+'\\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32' Comment
+'\n' Text
+
+'.' Punctuation
+'\\"' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" Standard preamble:' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" ========================================================================' Comment
+'\n' Text
+
+'.' Text
+'de' Keyword
+' ' Text
+'Sh' Literal.String
+' ' Text
+'\\" Subsection heading' Comment
+'\n' Text
+
+'.' Text
+'br' Keyword
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'t' Literal.String
+' ' Text
+'.Sp' Literal.String
+'\n' Text
+
+'.' Text
+'ne' Keyword
+' ' Text
+'5' Literal.Number
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'\\fB' Literal.String.Escape
+'\\\\' Literal.String.Escape
+'$1' Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'.' Punctuation
+'.' Literal.String
+'\n' Text
+
+'.' Text
+'de' Keyword
+' ' Text
+'Sp' Literal.String
+' ' Text
+'\\" Vertical space (when we can\'t use .PP)' Comment
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'t' Literal.String
+' ' Text
+'.sp' Literal.String
+' ' Text
+'.5v' Literal.String
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'n' Literal.String
+' ' Text
+'.sp' Literal.String
+'\n' Text
+
+'.' Punctuation
+'.' Literal.String
+'\n' Text
+
+'.' Text
+'de' Keyword
+' ' Text
+'Vb' Literal.String
+' ' Text
+'\\" Begin verbatim text' Comment
+'\n' Text
+
+'.' Text
+'ft' Keyword
+' ' Text
+'CW' Literal.String
+'\n' Text
+
+'.' Text
+'nf' Keyword
+'\n' Text
+
+'.' Text
+'ne' Keyword
+' ' Text
+'\\\\' Literal.String.Escape
+'$1' Literal.String
+'\n' Text
+
+'.' Punctuation
+'.' Literal.String
+'\n' Text
+
+'.' Text
+'de' Keyword
+' ' Text
+'Ve' Literal.String
+' ' Text
+'\\" End verbatim text' Comment
+'\n' Text
+
+'.' Text
+'ft' Keyword
+' ' Text
+'R' Literal.String
+'\n' Text
+
+'.' Text
+'fi' Keyword
+'\n' Text
+
+'.' Punctuation
+'.' Literal.String
+'\n' Text
+
+'.' Punctuation
+'\\" Set up some character translations and predefined strings. \\*(-- will' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" give an unbreakable dash, \\*(PI will give pi, \\*(L" will give a left' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" double quote, and \\*(R" will give a right double quote. | will give a' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" real vertical bar. \\*(C+ will give a nicer C++. Capital omega is used to' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" do unbreakable dashes and therefore won\'t be available. \\*(C` and \\*(C\'' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" expand to `\' in nroff, nothing in troff, for use with C<>.' Comment
+'\n' Text
+
+'.' Text
+'tr' Keyword
+' ' Text
+'\\(*W' Literal.String.Escape
+'-|\\(bv\\*(Tr' Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'C+' Literal.String
+' ' Text
+"C\\v'-.1v'\\h'-1p'\\s-2+\\h'-1p'+\\s0\\v'.1v'\\h'-1p'" Literal.String
+'\n' Text
+
+'.' Text
+'ie' Keyword
+' ' Text
+'n' Literal.String
+' ' Text
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'--' Literal.String
+' ' Text
+'\\(*W' Literal.String.Escape
+'-' Literal.String
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'PI' Literal.String
+' ' Text
+'pi' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'if' Literal.String
+' ' Text
+'(\\n(.H=4u)&(1m=24u)' Literal.String
+' ' Text
+'.ds' Literal.String
+' ' Text
+'--' Literal.String
+' ' Text
+'\\(*W' Literal.String.Escape
+'\\h' Literal.String.Escape
+'\'-12u\'\\(*W\\h\'-12u\'-\\"' Literal.String
+' ' Text
+'diablo' Literal.String
+' ' Text
+'10' Literal.Number
+' ' Text
+'pitch' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'if' Literal.String
+' ' Text
+'(\\n(.H=4u)&(1m=20u)' Literal.String
+' ' Text
+'.ds' Literal.String
+' ' Text
+'--' Literal.String
+' ' Text
+'\\(*W' Literal.String.Escape
+'\\h' Literal.String.Escape
+'\'-12u\'\\(*W\\h\'-8u\'-\\"' Literal.String
+' ' Text
+'diablo' Literal.String
+' ' Text
+'12' Literal.Number
+' ' Text
+'pitch' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'L"' Literal.String
+' ' Text
+'""' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'R"' Literal.String
+' ' Text
+'""' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'C`' Literal.String
+' ' Text
+'""' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+"C'" Literal.String
+' ' Text
+'""' Literal.String
+'\n' Text
+
+"'br" Text
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'el' Keyword
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'--' Literal.String
+' ' Text
+'\\|' Literal.String.Escape
+'\\(em' Literal.String.Escape
+'\\|' Literal.String.Escape
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'PI' Literal.String
+' ' Text
+'\\(*p' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'L"' Literal.String
+' ' Text
+'``' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'R"' Literal.String
+' ' Text
+"''" Literal.String
+'\n' Text
+
+"'br" Text
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+'\\"' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" If the F register is turned on, we\'ll generate index entries on stderr for' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" entries marked with X<> in POD. Of course, you\'ll have to process the' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" output yourself in some meaningful fashion.' Comment
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'\\nF' Literal.String.Escape
+' ' Text
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'de' Literal.String
+' ' Text
+'IX' Literal.String
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'tm' Literal.String
+' ' Text
+'Index:\\\\$1\\t\\\\n%\\t"\\\\$2"' Literal.String
+'\n' Text
+
+'.' Punctuation
+'.' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'nr' Literal.String
+' ' Text
+'%' Literal.String
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'rr' Literal.String
+' ' Text
+'F' Literal.String
+'\n' Text
+
+'.' Punctuation
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+'\\"' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" For nroff, turn off justification. Always turn off hyphenation; it makes' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" way too many mistakes in technical documents.' Comment
+'\n' Text
+
+'.' Text
+'hy' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'n' Literal.String
+' ' Text
+'.na' Literal.String
+'\n' Text
+
+'.' Punctuation
+'\\"' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).' Comment
+'\n' Text
+
+'.' Punctuation
+'\\" Fear. Run. Save yourself. No user-serviceable parts.' Comment
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'\\" fudge factors for nroff and troff' Comment
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'n' Literal.String
+' ' Text
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'#H' Literal.String
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'#V' Literal.String
+' ' Text
+'.8m' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'#F' Literal.String
+' ' Text
+'.3m' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'#[' Literal.String
+' ' Text
+'\\f1' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'#]' Literal.String
+' ' Text
+'\\fP' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'t' Literal.String
+' ' Text
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'#H' Literal.String
+' ' Text
+'((1u-(\\\\\\\\n(.fu%2u))*.13m)' Literal.String
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'#V' Literal.String
+' ' Text
+'.6m' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'#F' Literal.String
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'#[' Literal.String
+' ' Text
+'\\&' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'#]' Literal.String
+' ' Text
+'\\&' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'\\" simple accents for nroff and troff' Comment
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'n' Literal.String
+' ' Text
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+"'" Literal.String
+' ' Text
+'\\&' Literal.String.Escape
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'`' Literal.String
+' ' Text
+'\\&' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'^' Literal.String
+' ' Text
+'\\&' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+',' Literal.String
+' ' Text
+'\\&' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'~' Literal.String
+' ' Text
+'~' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'/' Literal.String
+'\n' Text
+
+'.' Punctuation
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'t' Literal.String
+' ' Text
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+"'" Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+'k:\\h\'-(\\\\n(.wu*8/10-\\*(#H)\'\\\'\\h"|\\\\n:u"' Literal.String
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'`' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu*8/10-\\*(#H)'\\`\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'^' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu*10/11-\\*(#H)'^\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+',' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu*8/10)',\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'~' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu-\\*(#H-.1m)'~\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'/' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu*8/10-\\*(#H)'\\z\\(sl\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Punctuation
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'\\" troff and (daisy-wheel) nroff accents' Comment
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+':' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu*8/10-\\*(#H+.1m+\\*(#F)'\\v'-\\*(#V'\\z.\\h'.2m+\\*(#F'.\\h'|\\\\n:u'\\v'\\*(#V'" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'8' Literal.Number
+' ' Text
+'\\h' Literal.String.Escape
+"'\\*(#H'\\(*b\\h'-\\*(#H'" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'o' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu+\\w'\\(de'u-\\*(#H)/2u'\\v'-.3n'\\*(#[\\z\\(de\\v'.3n'\\h'|\\\\n:u'\\*(#]" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'d-' Literal.String
+' ' Text
+'\\h' Literal.String.Escape
+"'\\*(#H'\\(pd\\h'-\\w'~'u'\\v'-.25m'\\f2\\(hy\\fP\\v'.25m'\\h'-\\*(#H'" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'D-' Literal.String
+' ' Text
+"D\\\\k:\\h'-\\w'D'u'\\v'-.11m'\\z\\(hy\\v'.11m'\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'th' Literal.String
+' ' Text
+'\\*' Literal.String.Escape
+"(#[\\v'.3m'\\s+1I\\s-1\\v'-.3m'\\h'-(\\w'I'u*2/3)'\\s-1o\\s+1\\*(#]" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'Th' Literal.String
+' ' Text
+'\\*' Literal.String.Escape
+"(#[\\s+2I\\s-2\\h'-\\w'I'u*3/5'\\v'-.3m'o\\v'.3m'\\*(#]" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'ae' Literal.String
+' ' Text
+"a\\h'-(\\w'a'u*4/10)'e" Literal.String
+'\n' Text
+
+'.' Text
+'ds' Keyword
+' ' Text
+'Ae' Literal.String
+' ' Text
+"A\\h'-(\\w'A'u*4/10)'E" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'\\" corrections for vroff' Comment
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'v' Literal.String
+' ' Text
+'.ds' Literal.String
+' ' Text
+'~' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu*9/10-\\*(#H)'\\s-2\\u~\\d\\s+2\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'v' Literal.String
+' ' Text
+'.ds' Literal.String
+' ' Text
+'^' Literal.String
+' ' Text
+'\\\\' Literal.String.Escape
+"k:\\h'-(\\\\n(.wu*10/11-\\*(#H)'\\v'-.4m'^\\v'.4m'\\h'|\\\\n:u'" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'\\" for low resolution devices (crt and lpr)' Comment
+'\n' Text
+
+'.' Text
+'if' Keyword
+' ' Text
+'\\n' Literal.String.Escape
+'(.H>23' Literal.String
+' ' Text
+'.if' Literal.String
+' ' Text
+'\\n' Literal.String.Escape
+'(.V>19' Literal.String
+' ' Text
+'\\\n' Text
+
+'\\{' Literal.String.Escape
+'\\\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+':' Literal.String
+' ' Text
+'e' Literal.String
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'8' Literal.Number
+' ' Text
+'ss' Literal.String
+'\n' Text
+
+'.' Literal.String
+' ' Text
+'ds' Literal.String
+' ' Text
+'o' Literal.String
+' ' Text
+'a' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'d-' Literal.String
+' ' Text
+"d\\h'-1'\\(ga" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'D-' Literal.String
+' ' Text
+"D\\h'-1'\\(hy" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'th' Literal.String
+' ' Text
+'\\o' Literal.String.Escape
+"'bp'" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'Th' Literal.String
+' ' Text
+'\\o' Literal.String.Escape
+"'LP'" Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'ae' Literal.String
+' ' Text
+'ae' Literal.String
+'\n' Text
+
+'.' Punctuation
+' ' Text
+'ds' Literal.String
+' ' Text
+'Ae' Literal.String
+' ' Text
+'AE' Literal.String
+'\n' Text
+
+'.' Punctuation
+'\\}' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'rm' Keyword
+' ' Text
+'#[' Literal.String
+' ' Text
+'#]' Literal.String
+' ' Text
+'#H' Literal.String
+' ' Text
+'#V' Literal.String
+' ' Text
+'#F' Literal.String
+' ' Text
+'C' Literal.String
+'\n' Text
+
+'.' Punctuation
+'\\" ========================================================================' Comment
+'\n' Text
+
+'.' Punctuation
+'\\"' Comment
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Title' Literal.String
+' ' Text
+'"PERLFUNC 1"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'TH' Keyword
+' ' Text
+'PERLFUNC' Literal.String
+' ' Text
+'1' Literal.Number
+' ' Text
+'"2006-01-07"' Literal.String.Double
+' ' Text
+'"perl v5.8.8"' Literal.String.Double
+' ' Text
+'"Perl Programmers Reference Guide"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'SH' Keyword
+' ' Text
+'"NAME"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"function"' Literal.String.Double
+'\n' Text
+
+'perlfunc ' Text
+'\\-' Literal.String.Escape
+' Perl builtin functions' Text
+'\n' Text
+
+'.' Text
+'SH' Keyword
+' ' Text
+'"DESCRIPTION"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Header' Literal.String
+' ' Text
+'"DESCRIPTION"' Literal.String.Double
+'\n' Text
+
+'The functions in this section can serve as terms in an expression.' Text
+'\n' Text
+
+'They fall into two major categories: list operators and named unary' Text
+'\n' Text
+
+'operators. These differ in their precedence relationship with a' Text
+'\n' Text
+
+'following comma. (See the precedence table in perlop.) List' Text
+'\n' Text
+
+'operators take more than one argument, while unary operators can never' Text
+'\n' Text
+
+'take more than one argument. Thus, a comma terminates the argument of' Text
+'\n' Text
+
+'a unary operator, but merely separates the arguments of a list' Text
+'\n' Text
+
+'operator. A unary operator generally provides a scalar context to its' Text
+'\n' Text
+
+'argument, while a list operator may provide either scalar or list' Text
+'\n' Text
+
+'contexts for its arguments. If it does both, the scalar arguments will' Text
+'\n' Text
+
+'be first, and the list argument will follow. (Note that there can ever' Text
+'\n' Text
+
+'be only one such list argument.) For instance, ' Text
+'\\fI' Literal.String.Escape
+'splice()' Text
+'\\fR' Literal.String.Escape
+' has three scalar' Text
+'\n' Text
+
+'arguments followed by a list, whereas ' Text
+'\\fI' Literal.String.Escape
+'gethostbyname()' Text
+'\\fR' Literal.String.Escape
+' has four scalar' Text
+'\n' Text
+
+'arguments.' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'In the syntax descriptions that follow, list operators that expect a' Text
+'\n' Text
+
+'list (and provide list context for the elements of the list) are shown' Text
+'\n' Text
+
+'with ' Text
+'\\s' Literal.String.Escape
+'-1LIST' Text
+'\\s' Literal.String.Escape
+'0 as an argument. Such a list may consist of any combination' Text
+'\n' Text
+
+'of scalar arguments or list values; the list values will be included' Text
+'\n' Text
+
+'in the list as if each individual element were interpolated at that' Text
+'\n' Text
+
+'point in the list, forming a longer single-dimensional list value.' Text
+'\n' Text
+
+'Commas should separate elements of the ' Text
+'\\s' Literal.String.Escape
+'-1LIST' Text
+'\\s' Literal.String.Escape
+'0.' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'Any function in the list below may be used either with or without' Text
+'\n' Text
+
+'parentheses around its arguments. (The syntax descriptions omit the' Text
+'\n' Text
+
+'parentheses.) If you use the parentheses, the simple (but occasionally' Text
+'\n' Text
+
+'surprising) rule is this: It ' Text
+'\\fI' Literal.String.Escape
+'looks' Text
+'\\fR' Literal.String.Escape
+' like a function, therefore it ' Text
+'\\fI' Literal.String.Escape
+'is' Text
+'\\fR' Literal.String.Escape
+' a' Text
+'\n' Text
+
+"function, and precedence doesn't matter. Otherwise it's a list" Text
+'\n' Text
+
+'operator or unary operator, and precedence does matter. And whitespace' Text
+'\n' Text
+
+"between the function and left parenthesis doesn't count" Text
+'\\*' Literal.String.Escape
+'(--so you need to' Text
+'\n' Text
+
+'be careful sometimes:' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'5' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print 1+2+4; # Prints 7.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print(1+2) + 4; # Prints 3.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print (1+2)+4; # Also prints 3!' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print +(1+2)+4; # Prints 7.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print ((1+2)+4); # Prints 7.' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'If you run Perl with the ' Text
+'\\fB' Literal.String.Escape
+'\\-' Literal.String.Escape
+'w' Text
+'\\fR' Literal.String.Escape
+' switch it can warn you about this. For' Text
+'\n' Text
+
+'example, the third line above produces:' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'2' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print (...) interpreted as function at - line 1.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' Useless use of integer addition in void context at - line 1.' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'A few functions take no arguments at all, and therefore work as neither' Text
+'\n' Text
+
+'unary nor list operators. These include such functions as ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`time' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endpwent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'. For example, ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`time+86_400' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' always means' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`time() + 86_400' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'.' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'For functions that can be used in either a scalar or list context,' Text
+'\n' Text
+
+'nonabortive failure is generally indicated in a scalar context by' Text
+'\n' Text
+
+'returning the undefined value, and in a list context by returning the' Text
+'\n' Text
+
+'null list.' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'Remember the following important rule: There is ' Text
+'\\fB' Literal.String.Escape
+'no rule' Text
+'\\fR' Literal.String.Escape
+' that relates' Text
+'\n' Text
+
+'the behavior of an expression in list context to its behavior in scalar' Text
+'\n' Text
+
+'context, or vice versa. It might do two totally different things.' Text
+'\n' Text
+
+'Each operator and function decides which sort of value it would be most' Text
+'\n' Text
+
+'appropriate to return in scalar context. Some operators return the' Text
+'\n' Text
+
+'length of the list that would have been returned in list context. Some' Text
+'\n' Text
+
+'operators return the first value in the list. Some operators return the' Text
+'\n' Text
+
+'last value in the list. Some operators return a count of successful' Text
+'\n' Text
+
+'operations. In general, they do what you want, unless you want' Text
+'\n' Text
+
+'consistency.' Text
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"context"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'A named array in scalar context is quite different from what would at' Text
+'\n' Text
+
+"first glance appear to be a list in scalar context. You can't get a list" Text
+'\n' Text
+
+'like ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`(1,2,3)' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' into being in scalar context, because the compiler knows' Text
+'\n' Text
+
+'the context at compile time. It would generate the scalar comma operator' Text
+'\n' Text
+
+'there, not the list construction version of the comma. That means it' Text
+'\n' Text
+
+'was never a list to start with.' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'In general, functions in Perl that serve as wrappers for system calls' Text
+'\n' Text
+
+'of the same name (like ' Text
+'\\fI' Literal.String.Escape
+'chown' Text
+'\\fR' Literal.String.Escape
+'\\|' Literal.String.Escape
+'(2), ' Text
+'\\fI' Literal.String.Escape
+'fork' Text
+'\\fR' Literal.String.Escape
+'\\|' Literal.String.Escape
+'(2), ' Text
+'\\fI' Literal.String.Escape
+'closedir' Text
+'\\fR' Literal.String.Escape
+'\\|' Literal.String.Escape
+'(2), etc.) all return' Text
+'\n' Text
+
+'true when they succeed and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`undef' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' otherwise, as is usually mentioned' Text
+'\n' Text
+
+'in the descriptions below. This is different from the C interfaces,' Text
+'\n' Text
+
+'which return ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'1' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' on failure. Exceptions to this rule are ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`wait' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`waitpid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`syscall' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'. System calls also set the special ' Text
+'\\f' Literal.String.Escape
+'(CW$!' Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'variable on failure. Other functions do not, except accidentally.' Text
+'\n' Text
+
+'.' Text
+'Sh' Keyword
+' ' Text
+'"Perl Functions by Category"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"function"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Subsection' Literal.String
+' ' Text
+'"Perl Functions by Category"' Literal.String.Double
+'\n' Text
+
+"Here are Perl's functions (including things that look like" Text
+'\n' Text
+
+'functions, like some keywords and named operators)' Text
+'\n' Text
+
+'arranged by category. Some functions appear in more' Text
+'\n' Text
+
+'than one place.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Functions for SCALARs or strings"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"scalar string character"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions for SCALARs or strings"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chomp' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chop' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chr' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`crypt' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`hex' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`index' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lc' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lcfirst' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`length' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`oct' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`ord' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`pack' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`q/STRING/' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`qq/STRING/' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`reverse' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`rindex' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sprintf' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`substr' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`tr///' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`uc' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`ucfirst' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`y///' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Regular expressions and pattern matching"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"regular expression regex regexp"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Regular expressions and pattern matching"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`m//' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`pos' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`quotemeta' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`s///' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`split' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`study' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`qr//' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Numeric functions"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"numeric number trigonometric trigonometry"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Numeric functions"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`abs' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`atan2' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`cos' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`exp' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`hex' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`int' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`log' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`oct' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`rand' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sin' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sqrt' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`srand' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'ie' Keyword
+' ' Text
+'n' Literal.String
+' ' Text
+'.IP' Literal.String
+' ' Text
+'"Functions for real @ARRAYs"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'el' Keyword
+' ' Text
+'.IP' Literal.String
+' ' Text
+'"Functions for real \\f(CW@ARRAYs\\fR"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"array"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions for real @ARRAYs"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`pop' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`push' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shift' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`splice' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`unshift' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Functions for list data"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"list"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions for list data"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`grep' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`join' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`map' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`qw/STRING/' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`reverse' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sort' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`unpack' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'ie' Keyword
+' ' Text
+'n' Literal.String
+' ' Text
+'.IP' Literal.String
+' ' Text
+'"Functions for real %HASHes"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'el' Keyword
+' ' Text
+'.IP' Literal.String
+' ' Text
+'"Functions for real \\f(CW%HASHes\\fR"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"hash"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions for real %HASHes"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`delete' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`each' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`exists' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`keys' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`values' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Input and output functions"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"I O input output dbm"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Input and output functions"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`binmode' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`close' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`closedir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmclose' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmopen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`die' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eof' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`fileno' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`flock' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`format' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getc' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`print' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`printf' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`read' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`readdir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`rewinddir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`seek' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`seekdir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`select' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`syscall' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sysread' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sysseek' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`syswrite' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`tell' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`telldir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`truncate' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`warn' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`write' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Functions for fixed length data or records"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions for fixed length data or records"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`pack' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`read' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`syscall' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sysread' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`syswrite' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`unpack' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`vec' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Functions for filehandles, files, or directories"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"file filehandle directory pipe link symlink"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions for filehandles, files, or directories"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CIX' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chdir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chmod' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chown' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chroot' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`fcntl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`glob' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`ioctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`link' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lstat' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`mkdir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`open' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`opendir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`readlink' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`rename' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`rmdir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`stat' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`symlink' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sysopen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`umask' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`unlink' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`utime' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Keywords related to the control flow of your Perl program"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"control flow"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Keywords related to the control flow of your Perl program"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`caller' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`continue' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`die' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`do' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dump' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`exit' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`goto' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`last' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`next' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`redo' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`return' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sub' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`wantarray' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Keywords related to scoping"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Keywords related to scoping"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`caller' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`import' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`local' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`my' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`our' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`package' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`use' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Miscellaneous functions"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Miscellaneous functions"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`defined' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dump' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`formline' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`local' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`my' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`our' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`reset' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`scalar' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`undef' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`wantarray' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Functions for processes and process groups"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"process pid process id"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions for processes and process groups"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`alarm' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`exec' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`fork' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpgrp' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getppid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpriority' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`kill' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`pipe' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`qx/STRING/' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setpgrp' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setpriority' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sleep' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`system' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`times' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`wait' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`waitpid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Keywords related to perl modules"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"module"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Keywords related to perl modules"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`do' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`import' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`no' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`package' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`require' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`use' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Keywords related to classes and object-orientedness"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"object class package"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Keywords related to classes and object-orientedness"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`bless' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmclose' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmopen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`package' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`ref' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`tie' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`tied' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`untie' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`use' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Low-level socket functions"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"socket sock"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Low-level socket functions"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`accept' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`bind' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`connect' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpeername' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getsockname' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getsockopt' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`listen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`recv' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`send' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setsockopt' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shutdown' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`socket' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`socketpair' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"System V interprocess communication functions"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"IPC System V semaphore shared memory memory message"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"System V interprocess communication functions"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgget' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgrcv' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgsnd' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`semctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`semget' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`semop' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmget' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmread' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmwrite' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Fetching user and group info"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"user group password uid gid passwd etc passwd"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Fetching user and group info"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endgrent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endhostent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endnetent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endpwent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getgrent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getgrgid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getgrnam' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getlogin' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpwent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpwnam' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpwuid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setgrent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setpwent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Fetching network info"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"network protocol host hostname IP address service"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Fetching network info"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endprotoent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endservent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`gethostbyaddr' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`gethostbyname' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`gethostent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getnetbyaddr' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getnetbyname' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getnetent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getprotobyname' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getprotobynumber' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getprotoent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getservbyname' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getservbyport' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getservent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sethostent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setnetent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setprotoent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setservent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Time-related functions"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"time date"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Time-related functions"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`gmtime' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`localtime' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`time' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`times' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Functions new in perl5"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"perl5"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions new in perl5"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`abs' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`bless' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chomp' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chr' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`exists' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`formline' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`glob' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`import' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lc' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lcfirst' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`map' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`my' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`no' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`our' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`prototype' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`qx' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`qw' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`readline' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`readpipe' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`ref' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sub*' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sysopen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`tie' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`tied' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`uc' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`ucfirst' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`untie' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`use' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'* ' Text
+'\\-' Literal.String.Escape
+' ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sub' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' was a keyword in perl4, but in perl5 it is an' Text
+'\n' Text
+
+'operator, which can be used in expressions.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"Functions obsoleted in perl5"' Literal.String.Double
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"Functions obsoleted in perl5"' Literal.String.Double
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmclose' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmopen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'Sh' Keyword
+' ' Text
+'"Portability"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"portability Unix portable"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Subsection' Literal.String
+' ' Text
+'"Portability"' Literal.String.Double
+'\n' Text
+
+'Perl was born in Unix and can therefore access all common Unix' Text
+'\n' Text
+
+'system calls. In non-Unix environments, the functionality of some' Text
+'\n' Text
+
+'Unix system calls may not be available, or details of the available' Text
+'\n' Text
+
+'functionality may differ slightly. The Perl functions affected' Text
+'\n' Text
+
+'by this are:' Text
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'X' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`binmode' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chmod' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chown' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chroot' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`crypt' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmclose' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dbmopen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`dump' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endgrent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endhostent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endnetent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endprotoent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endpwent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`endservent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`exec' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`fcntl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`flock' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`fork' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getgrent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getgrgid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`gethostbyname' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`gethostent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getlogin' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getnetbyaddr' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getnetbyname' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getnetent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getppid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpgrp' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpriority' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getprotobynumber' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getprotoent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpwent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpwnam' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getpwuid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getservbyport' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getservent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`getsockopt' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`glob' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`ioctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`kill' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`link' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lstat' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgget' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgrcv' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`msgsnd' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`open' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`pipe' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`readlink' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`rename' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`select' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`semctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`semget' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`semop' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setgrent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sethostent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setnetent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setpgrp' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setpriority' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setprotoent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setpwent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setservent' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`setsockopt' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmctl' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmget' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmread' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`shmwrite' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`socket' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`socketpair' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`stat' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`symlink' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`syscall' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sysopen' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`system' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`times' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`truncate' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`umask' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`unlink' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`utime' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`wait' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`waitpid' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'PP' Keyword
+'\n' Text
+
+'For more information about the portability of these functions, see' Text
+'\n' Text
+
+'perlport and other available platform-specific documentation.' Text
+'\n' Text
+
+'.' Text
+'Sh' Keyword
+' ' Text
+'"Alphabetical Listing of Perl Functions"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Subsection' Literal.String
+' ' Text
+'"Alphabetical Listing of Perl Functions"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"\\-X \\s-1FILEHANDLE\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"-r -w -x -o -R -W -X -O -e -z -s -f -d -l -p -S -b -c -t -u -g -k -T -B -M -A -C"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"-X FILEHANDLE"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"\\-X \\s-1EXPR\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"-X EXPR"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"\\-X"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"-X"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'A file test, where X is one of the letters listed below. This unary' Text
+'\n' Text
+
+'operator takes one argument, either a filename or a filehandle, and' Text
+'\n' Text
+
+'tests the associated file to see if something is true about it. If the' Text
+'\n' Text
+
+'argument is omitted, tests ' Text
+'\\f' Literal.String.Escape
+'(CW$_' Text
+'\\fR' Literal.String.Escape
+', except for ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'t' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', which tests ' Text
+'\\s' Literal.String.Escape
+'-1STDIN' Text
+'\\s' Literal.String.Escape
+'0.' Text
+'\n' Text
+
+'Unless otherwise documented, it returns ' Text
+'\\f' Literal.String.Escape
+'(CW1' Text
+'\\fR' Literal.String.Escape
+' for true and ' Text
+'\\f' Literal.String.Escape
+"(CW''" Text
+'\\fR' Literal.String.Escape
+' for false, or' Text
+'\n' Text
+
+"the undefined value if the file doesn't exist. Despite the funny" Text
+'\n' Text
+
+'names, precedence is the same as any other named unary operator, and' Text
+'\n' Text
+
+'the argument may be parenthesized like any other unary operator. The' Text
+'\n' Text
+
+'operator may be any of:' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -r File is readable by effective uid/gid.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -w File is writable by effective uid/gid.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -x File is executable by effective uid/gid.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -o File is owned by effective uid.' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'4' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -R File is readable by real uid/gid.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -W File is writable by real uid/gid.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -X File is executable by real uid/gid.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -O File is owned by real uid.' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'3' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -e File exists.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -z File has zero size (is empty).' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -s File has nonzero size (returns size in bytes).' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -f File is a plain file.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -d File is a directory.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -l File is a symbolic link.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -p File is a named pipe (FIFO), or Filehandle is a pipe.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -S File is a socket.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -b File is a block special file.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -c File is a character special file.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -t Filehandle is opened to a tty.' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'3' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -u File has setuid bit set.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -g File has setgid bit set.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -k File has sticky bit set.' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'2' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -T File is an ASCII text file (heuristic guess).' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -B File is a "binary" file (opposite of -T).' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'3' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -M Script start time minus file modification time, in days.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -A Same for access time.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' -C Same for inode change time (Unix, may differ for other platforms)' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Example:' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'5' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' while (<>) {' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' chomp;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' next unless -f $_; # ignore specials' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' #...' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' }' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'The interpretation of the file permission operators ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'r' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'R' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'w' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'W' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'x' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'X' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' is by default based solely on the mode' Text
+'\n' Text
+
+'of the file and the uids and gids of the user. There may be other' Text
+'\n' Text
+
+"reasons you can't actually read, write, or execute the file. Such" Text
+'\n' Text
+
+'reasons may be for example network filesystem access controls, ACLs' Text
+'\n' Text
+
+'(access control lists), read-only filesystems, and unrecognized' Text
+'\n' Text
+
+'executable formats.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Also note that, for the superuser on the local filesystems, the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'r' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'R' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'w' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'W' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' tests always return 1, and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'x' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'X' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' return 1' Text
+'\n' Text
+
+'if any execute bit is set in the mode. Scripts run by the superuser' Text
+'\n' Text
+
+'may thus need to do a ' Text
+'\\fI' Literal.String.Escape
+'stat()' Text
+'\\fR' Literal.String.Escape
+' to determine the actual mode of the file,' Text
+'\n' Text
+
+'or temporarily set their effective uid to something else.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'If you are using ACLs, there is a pragma called ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`filetest' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' that may' Text
+'\n' Text
+
+'produce more accurate results than the bare ' Text
+'\\fI' Literal.String.Escape
+'stat()' Text
+'\\fR' Literal.String.Escape
+' mode bits.' Text
+'\n' Text
+
+'When under the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+"(C`use filetest 'access'" Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' the above-mentioned filetests' Text
+'\n' Text
+
+'will test whether the permission can (not) be granted using the' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\fI' Literal.String.Escape
+'access()' Text
+'\\fR' Literal.String.Escape
+' family of system calls. Also note that the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'x' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'X' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' may' Text
+'\n' Text
+
+'under this pragma return true even if there are no execute permission' Text
+'\n' Text
+
+'bits set (nor any extra execute permission ACLs). This strangeness is' Text
+'\n' Text
+
+"due to the underlying system calls' definitions. Read the" Text
+'\n' Text
+
+'documentation for the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`filetest' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' pragma for more information.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Note that ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'s/a/b/' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' does not do a negated substitution. Saying' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'exp($foo)' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' still works as expected, however' Text
+'\\*' Literal.String.Escape
+'(--only single letters' Text
+'\n' Text
+
+'following a minus are interpreted as file tests.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'The ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'T' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'B' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' switches work as follows. The first block or so of the' Text
+'\n' Text
+
+'file is examined for odd characters such as strange control codes or' Text
+'\n' Text
+
+'characters with the high bit set. If too many strange characters (>30%)' Text
+'\n' Text
+
+"are found, it's a " Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'B' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+" file; otherwise it's a " Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'T' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' file. Also, any file' Text
+'\n' Text
+
+'containing null in the first block is considered a binary file. If ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'T' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'or ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'B' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' is used on a filehandle, the current ' Text
+'\\s' Literal.String.Escape
+'-1IO' Text
+'\\s' Literal.String.Escape
+'0 buffer is examined' Text
+'\n' Text
+
+'rather than the first block. Both ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'T' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'B' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' return true on a null' Text
+'\n' Text
+
+'file, or a file at ' Text
+'\\s' Literal.String.Escape
+'-1EOF' Text
+'\\s' Literal.String.Escape
+'0 when testing a filehandle. Because you have to' Text
+'\n' Text
+
+'read a file to do the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'T' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' test, on most occasions you want to use a ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'f' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'against the file first, as in ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`next unless ' Text
+'\\-' Literal.String.Escape
+'f $file && ' Text
+'\\-' Literal.String.Escape
+'T $file' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'If any of the file tests (or either the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`stat' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' or ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lstat' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' operators) are given' Text
+'\n' Text
+
+'the special filehandle consisting of a solitary underline, then the stat' Text
+'\n' Text
+
+'structure of the previous file test (or stat operator) is used, saving' Text
+'\n' Text
+
+"a system call. (This doesn't work with " Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'t' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', and you need to remember' Text
+'\n' Text
+
+'that ' Text
+'\\fI' Literal.String.Escape
+'lstat()' Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'l' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' will leave values in the stat structure for the' Text
+'\n' Text
+
+'symbolic link, not the real file.) (Also, if the stat buffer was filled by' Text
+'\n' Text
+
+'an ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`lstat' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' call, ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'T' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\-' Literal.String.Escape
+'B' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' will reset it with the results of ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`stat _' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+').' Text
+'\n' Text
+
+'Example:' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'1' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Can do.' Text
+'\\e' Literal.String.Escape
+'n" if -r $a || -w _ || -x _;' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'9' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' stat($filename);' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Readable' Text
+'\\e' Literal.String.Escape
+'n" if -r _;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Writable' Text
+'\\e' Literal.String.Escape
+'n" if -w _;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Executable' Text
+'\\e' Literal.String.Escape
+'n" if -x _;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Setuid' Text
+'\\e' Literal.String.Escape
+'n" if -u _;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Setgid' Text
+'\\e' Literal.String.Escape
+'n" if -g _;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Sticky' Text
+'\\e' Literal.String.Escape
+'n" if -k _;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Text' Text
+'\\e' Literal.String.Escape
+'n" if -T _;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' print "Binary' Text
+'\\e' Literal.String.Escape
+'n" if -B _;' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"abs \\s-1VALUE\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"abs absolute"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"abs VALUE"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"abs"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"abs"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'Returns the absolute value of its argument.' Text
+'\n' Text
+
+'If ' Text
+'\\s' Literal.String.Escape
+'-1VALUE' Text
+'\\s' Literal.String.Escape
+'0 is omitted, uses ' Text
+'\\f' Literal.String.Escape
+'(CW$_' Text
+'\\fR' Literal.String.Escape
+'.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"accept \\s-1NEWSOCKET\\s0,GENERICSOCKET"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"accept"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"accept NEWSOCKET,GENERICSOCKET"' Literal.String.Double
+'\n' Text
+
+'Accepts an incoming socket connect, just as the ' Text
+'\\fI' Literal.String.Escape
+'accept' Text
+'\\fR' Literal.String.Escape
+'\\|' Literal.String.Escape
+'(2) system call' Text
+'\n' Text
+
+'does. Returns the packed address if it succeeded, false otherwise.' Text
+'\n' Text
+
+'See the example in ' Text
+'\\*' Literal.String.Escape
+'(L"Sockets: Client/Server Communication' Text
+'\\*' Literal.String.Escape
+'(R" in perlipc.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'On systems that support a close-on-exec flag on files, the flag will' Text
+'\n' Text
+
+'be set for the newly opened file descriptor, as determined by the' Text
+'\n' Text
+
+'value of $^F. See ' Text
+'\\*' Literal.String.Escape
+'(L"$^F' Text
+'\\*' Literal.String.Escape
+'(R" in perlvar.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"alarm \\s-1SECONDS\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"alarm SIGALRM timer"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"alarm SECONDS"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"alarm"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"alarm"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'Arranges to have a ' Text
+'\\s' Literal.String.Escape
+'-1SIGALRM' Text
+'\\s' Literal.String.Escape
+'0 delivered to this process after the' Text
+'\n' Text
+
+'specified number of wallclock seconds has elapsed. If ' Text
+'\\s' Literal.String.Escape
+'-1SECONDS' Text
+'\\s' Literal.String.Escape
+'0 is not' Text
+'\n' Text
+
+'specified, the value stored in ' Text
+'\\f' Literal.String.Escape
+'(CW$_' Text
+'\\fR' Literal.String.Escape
+' is used. (On some machines,' Text
+'\n' Text
+
+'unfortunately, the elapsed time may be up to one second less or more' Text
+'\n' Text
+
+'than you specified because of how seconds are counted, and process' Text
+'\n' Text
+
+'scheduling may delay the delivery of the signal even further.)' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Only one timer may be counting at once. Each call disables the' Text
+'\n' Text
+
+'previous timer, and an argument of ' Text
+'\\f' Literal.String.Escape
+'(CW0' Text
+'\\fR' Literal.String.Escape
+' may be supplied to cancel the' Text
+'\n' Text
+
+'previous timer without starting a new one. The returned value is the' Text
+'\n' Text
+
+'amount of time remaining on the previous timer.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+"For delays of finer granularity than one second, you may use Perl's" Text
+'\n' Text
+
+'four-argument version of ' Text
+'\\fI' Literal.String.Escape
+'select()' Text
+'\\fR' Literal.String.Escape
+' leaving the first three arguments' Text
+'\n' Text
+
+'undefined, or you might be able to use the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`syscall' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' interface to' Text
+'\n' Text
+
+'access ' Text
+'\\fI' Literal.String.Escape
+'setitimer' Text
+'\\fR' Literal.String.Escape
+'\\|' Literal.String.Escape
+'(2) if your system supports it. The Time::HiRes' Text
+'\n' Text
+
+'module (from ' Text
+'\\s' Literal.String.Escape
+'-1CPAN' Text
+'\\s' Literal.String.Escape
+'0, and starting from Perl 5.8 part of the standard' Text
+'\n' Text
+
+'distribution) may also prove useful.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'It is usually a mistake to intermix ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`alarm' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sleep' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' calls.' Text
+'\n' Text
+
+'(' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`sleep' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' may be internally implemented in your system with ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`alarm' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+')' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'If you want to use ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`alarm' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' to time out a system call you need to use an' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'/' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`die' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+" pair. You can't rely on the alarm causing the system call to" Text
+'\n' Text
+
+'fail with ' Text
+'\\f' Literal.String.Escape
+'(CW$!' Text
+'\\fR' Literal.String.Escape
+' set to ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`EINTR' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' because Perl sets up signal handlers to' Text
+'\n' Text
+
+'restart system calls on some systems. Using ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'/' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`die' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' always works,' Text
+'\n' Text
+
+'modulo the caveats given in ' Text
+'\\*' Literal.String.Escape
+'(L"Signals' Text
+'\\*' Literal.String.Escape
+'(R" in perlipc.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'13' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' eval {' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' local $SIG{ALRM} = sub { die "alarm' Text
+'\\e' Literal.String.Escape
+'n" }; # NB: ' Text
+'\\e' Literal.String.Escape
+'n required' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' alarm $timeout;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' $nread = sysread SOCKET, $buffer, $size;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' alarm 0;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' };' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' if ($@) {' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' die unless $@ eq "alarm' Text
+'\\e' Literal.String.Escape
+'n"; # propagate unexpected errors' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' # timed out' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' }' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' else {' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+" # didn't" Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' }' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'For more information see perlipc.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"atan2 Y,X"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"atan2 arctangent tan tangent"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"atan2 Y,X"' Literal.String.Double
+'\n' Text
+
+'Returns the arctangent of Y/X in the range ' Text
+'\\-' Literal.String.Escape
+'PI to ' Text
+'\\s' Literal.String.Escape
+'-1PI' Text
+'\\s' Literal.String.Escape
+'0.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'For the tangent operation, you may use the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`Math::Trig::tan' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'function, or use the familiar relation:' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'1' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' sub tan { sin($_[0]) / cos($_[0]) }' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Note that atan2(0, 0) is not well' Text
+'\\-' Literal.String.Escape
+'defined.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"bind \\s-1SOCKET\\s0,NAME"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"bind"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"bind SOCKET,NAME"' Literal.String.Double
+'\n' Text
+
+'Binds a network address to a socket, just as the bind system call' Text
+'\n' Text
+
+'does. Returns true if it succeeded, false otherwise. ' Text
+'\\s' Literal.String.Escape
+'-1NAME' Text
+'\\s' Literal.String.Escape
+'0 should be a' Text
+'\n' Text
+
+'packed address of the appropriate type for the socket. See the examples in' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\*' Literal.String.Escape
+'(L"Sockets: Client/Server Communication' Text
+'\\*' Literal.String.Escape
+'(R" in perlipc.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"binmode \\s-1FILEHANDLE\\s0, \\s-1LAYER\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"binmode binary text DOS Windows"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"binmode FILEHANDLE, LAYER"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"binmode \\s-1FILEHANDLE\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"binmode FILEHANDLE"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'Arranges for ' Text
+'\\s' Literal.String.Escape
+'-1FILEHANDLE' Text
+'\\s' Literal.String.Escape
+'0 to be read or written in ' Text
+'\\*' Literal.String.Escape
+'(L"binary' Text
+'\\*' Literal.String.Escape
+'(R" or ' Text
+'\\*' Literal.String.Escape
+'(L"text' Text
+'\\*' Literal.String.Escape
+'(R"' Text
+'\n' Text
+
+'mode on systems where the run-time libraries distinguish between' Text
+'\n' Text
+
+'binary and text files. If ' Text
+'\\s' Literal.String.Escape
+'-1FILEHANDLE' Text
+'\\s' Literal.String.Escape
+'0 is an expression, the value is' Text
+'\n' Text
+
+'taken as the name of the filehandle. Returns true on success,' Text
+'\n' Text
+
+'otherwise it returns ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`undef' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' and sets ' Text
+'\\f' Literal.String.Escape
+'(CW$!' Text
+'\\fR' Literal.String.Escape
+' (errno).' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'On some systems (in general, ' Text
+'\\s' Literal.String.Escape
+'-1DOS' Text
+'\\s' Literal.String.Escape
+'0 and Windows-based systems) ' Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+"is necessary when you're not working with a text file. For the sake" Text
+'\n' Text
+
+'of portability it is a good idea to always use it when appropriate,' Text
+'\n' Text
+
+"and to never use it when it isn't appropriate. Also, people can" Text
+'\n' Text
+
+'set their I/O to be by default ' Text
+'\\s' Literal.String.Escape
+'-1UTF' Text
+'\\-' Literal.String.Escape
+'8' Text
+'\\s' Literal.String.Escape
+'0 encoded Unicode, not bytes.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'In other words: regardless of platform, use ' Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+' on binary data,' Text
+'\n' Text
+
+'like for example images.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'If ' Text
+'\\s' Literal.String.Escape
+'-1LAYER' Text
+'\\s' Literal.String.Escape
+'0 is present it is a single string, but may contain multiple' Text
+'\n' Text
+
+'directives. The directives alter the behaviour of the file handle.' Text
+'\n' Text
+
+'When ' Text
+'\\s' Literal.String.Escape
+'-1LAYER' Text
+'\\s' Literal.String.Escape
+'0 is present using binmode on text file makes sense.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'If ' Text
+'\\s' Literal.String.Escape
+'-1LAYER' Text
+'\\s' Literal.String.Escape
+'0 is omitted or specified as ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:raw' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' the filehandle is made' Text
+'\n' Text
+
+'suitable for passing binary data. This includes turning off possible ' Text
+'\\s' Literal.String.Escape
+'-1CRLF' Text
+'\\s' Literal.String.Escape
+'0' Text
+'\n' Text
+
+'translation and marking it as bytes (as opposed to Unicode characters).' Text
+'\n' Text
+
+'Note that, despite what may be implied in ' Text
+'\\fI' Literal.String.Escape
+'\\*' Literal.String.Escape
+'(L"Programming Perl' Text
+'\\*' Literal.String.Escape
+'(R"' Text
+'\\fR' Literal.String.Escape
+' (the' Text
+'\n' Text
+
+'Camel) or elsewhere, ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:raw' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' is ' Text
+'\\fI' Literal.String.Escape
+'not' Text
+'\\fR' Literal.String.Escape
+' the simply inverse of ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:crlf' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\*' Literal.String.Escape
+'(-- other layers which would affect binary nature of the stream are' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\fI' Literal.String.Escape
+'also' Text
+'\\fR' Literal.String.Escape
+' disabled. See PerlIO, perlrun and the discussion about the' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\s' Literal.String.Escape
+'-1PERLIO' Text
+'\\s' Literal.String.Escape
+'0 environment variable.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'The ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:bytes' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:crlf' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:utf8' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', and any other directives of the' Text
+'\n' Text
+
+'form ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:...' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', are called I/O ' Text
+'\\fI' Literal.String.Escape
+'layers' Text
+'\\fR' Literal.String.Escape
+'. The ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`open' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' pragma can be used to' Text
+'\n' Text
+
+'establish default I/O layers. See open.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\fI' Literal.String.Escape
+'The ' Text
+'\\s' Literal.String.Escape
+'-1LAYER' Text
+'\\s' Literal.String.Escape
+'0 parameter of the ' Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fI' Literal.String.Escape
+' function is described as ' Text
+'\\*' Literal.String.Escape
+'(L"' Text
+'\\s' Literal.String.Escape
+'-1DISCIPLINE' Text
+'\\s' Literal.String.Escape
+'0' Text
+'\\*' Literal.String.Escape
+'(R"' Text
+'\n' Text
+
+'in ' Text
+'\\*' Literal.String.Escape
+'(L"Programming Perl, 3rd Edition' Text
+'\\*' Literal.String.Escape
+'(R". However, since the publishing of this' Text
+'\n' Text
+
+'book, by many known as ' Text
+'\\*' Literal.String.Escape
+'(L"Camel ' Text
+'\\s' Literal.String.Escape
+'-1III' Text
+'\\s' Literal.String.Escape
+'0' Text
+'\\*' Literal.String.Escape
+'(R", the consensus of the naming of this' Text
+'\n' Text
+
+'functionality has moved from ' Text
+'\\*' Literal.String.Escape
+'(L"discipline' Text
+'\\*' Literal.String.Escape
+'(R" to ' Text
+'\\*' Literal.String.Escape
+'(L"layer' Text
+'\\*' Literal.String.Escape
+'(R". All documentation' Text
+'\n' Text
+
+'of this version of Perl therefore refers to ' Text
+'\\*' Literal.String.Escape
+'(L"layers' Text
+'\\*' Literal.String.Escape
+'(R" rather than to' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\*' Literal.String.Escape
+'(L"disciplines' Text
+'\\*' Literal.String.Escape
+'(R". Now back to the regularly scheduled documentation...' Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'To mark ' Text
+'\\s' Literal.String.Escape
+'-1FILEHANDLE' Text
+'\\s' Literal.String.Escape
+'0 as ' Text
+'\\s' Literal.String.Escape
+'-1UTF' Text
+'\\-' Literal.String.Escape
+'8' Text
+'\\s' Literal.String.Escape
+'0, use ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:utf8' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'In general, ' Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+' should be called after ' Text
+'\\fI' Literal.String.Escape
+'open()' Text
+'\\fR' Literal.String.Escape
+' but before any I/O' Text
+'\n' Text
+
+'is done on the filehandle. Calling ' Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+' will normally flush any' Text
+'\n' Text
+
+'pending buffered output data (and perhaps pending input data) on the' Text
+'\n' Text
+
+'handle. An exception to this is the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:encoding' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' layer that' Text
+'\n' Text
+
+'changes the default character encoding of the handle, see open.' Text
+'\n' Text
+
+'The ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:encoding' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' layer sometimes needs to be called in' Text
+'\n' Text
+
+'mid' Text
+'\\-' Literal.String.Escape
+"stream, and it doesn't flush the stream. The " Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:encoding' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'also implicitly pushes on top of itself the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`:utf8' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' layer because' Text
+'\n' Text
+
+'internally Perl will operate on ' Text
+'\\s' Literal.String.Escape
+'-1UTF' Text
+'\\-' Literal.String.Escape
+'8' Text
+'\\s' Literal.String.Escape
+'0 encoded Unicode characters.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'The operating system, device drivers, C libraries, and Perl run-time' Text
+'\n' Text
+
+'system all work together to let the programmer treat a single' Text
+'\n' Text
+
+'character (' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'n' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+') as the line terminator, irrespective of the external' Text
+'\n' Text
+
+'representation. On many operating systems, the native text file' Text
+'\n' Text
+
+'representation matches the internal representation, but on some' Text
+'\n' Text
+
+'platforms the external representation of ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'n' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' is made up of more than' Text
+'\n' Text
+
+'one character.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Mac ' Text
+'\\s' Literal.String.Escape
+'-1OS' Text
+'\\s' Literal.String.Escape
+'0, all variants of Unix, and Stream_LF files on ' Text
+'\\s' Literal.String.Escape
+'-1VMS' Text
+'\\s' Literal.String.Escape
+'0 use a single' Text
+'\n' Text
+
+'character to end each line in the external representation of text (even' Text
+'\n' Text
+
+'though that single character is ' Text
+'\\s' Literal.String.Escape
+'-1CARRIAGE' Text
+'\\s' Literal.String.Escape
+'0 ' Text
+'\\s' Literal.String.Escape
+'-1RETURN' Text
+'\\s' Literal.String.Escape
+'0 on Mac ' Text
+'\\s' Literal.String.Escape
+'-1OS' Text
+'\\s' Literal.String.Escape
+'0 and ' Text
+'\\s' Literal.String.Escape
+'-1LINE' Text
+'\\s' Literal.String.Escape
+'0 ' Text
+'\\s' Literal.String.Escape
+'-1FEED' Text
+'\\s' Literal.String.Escape
+'0' Text
+'\n' Text
+
+'on Unix and most ' Text
+'\\s' Literal.String.Escape
+'-1VMS' Text
+'\\s' Literal.String.Escape
+'0 files). In other systems like ' Text
+'\\s' Literal.String.Escape
+'-1OS/2' Text
+'\\s' Literal.String.Escape
+'0, ' Text
+'\\s' Literal.String.Escape
+'-1DOS' Text
+'\\s' Literal.String.Escape
+'0 and the' Text
+'\n' Text
+
+'various flavors of MS-Windows your program sees a ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'n' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' as a simple ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'cJ' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+',' Text
+'\n' Text
+
+"but what's stored in text files are the two characters " Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'cM' Text
+'\\e' Literal.String.Escape
+'cJ' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'. That' Text
+'\n' Text
+
+"means that, if you don't use " Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+' on these systems, ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'cM' Text
+'\\e' Literal.String.Escape
+'cJ' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'sequences on disk will be converted to ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'n' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' on input, and any ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'n' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' in' Text
+'\n' Text
+
+'your program will be converted back to ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'cM' Text
+'\\e' Literal.String.Escape
+'cJ' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' on output. This is what' Text
+'\n' Text
+
+'you want for text files, but it can be disastrous for binary files.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Another consequence of using ' Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+' (on some systems) is that' Text
+'\n' Text
+
+'special end-of-file markers will be seen as part of the data stream.' Text
+'\n' Text
+
+'For systems from the Microsoft family this means that if your binary' Text
+'\n' Text
+
+'data contains ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`' Text
+'\\e' Literal.String.Escape
+'cZ' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', the I/O subsystem will regard it as the end of' Text
+'\n' Text
+
+'the file, unless you use ' Text
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+'.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\fI' Literal.String.Escape
+'binmode()' Text
+'\\fR' Literal.String.Escape
+' is not only important for ' Text
+'\\fI' Literal.String.Escape
+'readline()' Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\fI' Literal.String.Escape
+'print()' Text
+'\\fR' Literal.String.Escape
+' operations,' Text
+'\n' Text
+
+'but also when using ' Text
+'\\fI' Literal.String.Escape
+'read()' Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\fI' Literal.String.Escape
+'seek()' Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\fI' Literal.String.Escape
+'sysread()' Text
+'\\fR' Literal.String.Escape
+', ' Text
+'\\fI' Literal.String.Escape
+'syswrite()' Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\fI' Literal.String.Escape
+'tell()' Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'(see perlport for more details). See the ' Text
+'\\f' Literal.String.Escape
+'(CW$/' Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`$' Text
+'\\e' Literal.String.Escape
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' variables' Text
+'\n' Text
+
+'in perlvar for how to manually set your input and output' Text
+'\n' Text
+
+'line-termination sequences.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"bless \\s-1REF\\s0,CLASSNAME"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"bless"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"bless REF,CLASSNAME"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"bless \\s-1REF\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"bless REF"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'This function tells the thingy referenced by ' Text
+'\\s' Literal.String.Escape
+'-1REF' Text
+'\\s' Literal.String.Escape
+'0 that it is now an object' Text
+'\n' Text
+
+'in the ' Text
+'\\s' Literal.String.Escape
+'-1CLASSNAME' Text
+'\\s' Literal.String.Escape
+'0 package. If ' Text
+'\\s' Literal.String.Escape
+'-1CLASSNAME' Text
+'\\s' Literal.String.Escape
+'0 is omitted, the current package' Text
+'\n' Text
+
+'is used. Because a ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`bless' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' is often the last thing in a constructor,' Text
+'\n' Text
+
+'it returns the reference for convenience. Always use the two-argument' Text
+'\n' Text
+
+'version if a derived class might inherit the function doing the blessing.' Text
+'\n' Text
+
+'See perltoot and perlobj for more about the blessing (and blessings)' Text
+'\n' Text
+
+'of objects.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Consider always blessing objects in CLASSNAMEs that are mixed case.' Text
+'\n' Text
+
+'Namespaces with all lowercase names are considered reserved for' Text
+'\n' Text
+
+'Perl pragmata. Builtin types have all uppercase names. To prevent' Text
+'\n' Text
+
+'confusion, you may wish to avoid such package names as well. Make sure' Text
+'\n' Text
+
+'that ' Text
+'\\s' Literal.String.Escape
+'-1CLASSNAME' Text
+'\\s' Literal.String.Escape
+'0 is a true value.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'See ' Text
+'\\*' Literal.String.Escape
+'(L"Perl Modules' Text
+'\\*' Literal.String.Escape
+'(R" in perlmod.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"caller \\s-1EXPR\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"caller call stack stack stack trace"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"caller EXPR"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"caller"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"caller"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'Returns the context of the current subroutine call. In scalar context,' Text
+'\n' Text
+
+"returns the caller's package name if there is a caller, that is, if" Text
+'\n' Text
+
+"we're in a subroutine or " Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' or ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`require' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', and the undefined value' Text
+'\n' Text
+
+'otherwise. In list context, returns' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'1' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' ($package, $filename, $line) = caller;' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'With ' Text
+'\\s' Literal.String.Escape
+'-1EXPR' Text
+'\\s' Literal.String.Escape
+'0, it returns some extra information that the debugger uses to' Text
+'\n' Text
+
+'print a stack trace. The value of ' Text
+'\\s' Literal.String.Escape
+'-1EXPR' Text
+'\\s' Literal.String.Escape
+'0 indicates how many call frames' Text
+'\n' Text
+
+'to go back before the current one.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'2' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' ($package, $filename, $line, $subroutine, $hasargs,' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller($i);' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Here ' Text
+'\\f' Literal.String.Escape
+'(CW$subroutine' Text
+'\\fR' Literal.String.Escape
+' may be ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`(eval)' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' if the frame is not a subroutine' Text
+'\n' Text
+
+'call, but an ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'. In such a case additional elements ' Text
+'\\f' Literal.String.Escape
+'(CW$evaltext' Text
+'\\fR' Literal.String.Escape
+' and' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW$is_require' Text
+'\\fR' Literal.String.Escape
+' are set: ' Text
+'\\f' Literal.String.Escape
+'(CW$is_require' Text
+'\\fR' Literal.String.Escape
+' is true if the frame is created by a' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`require' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' or ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`use' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' statement, ' Text
+'\\f' Literal.String.Escape
+'(CW$evaltext' Text
+'\\fR' Literal.String.Escape
+' contains the text of the' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval EXPR' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' statement. In particular, for an ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval BLOCK' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' statement,' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW$filename' Text
+'\\fR' Literal.String.Escape
+' is ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`(eval)' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+', but ' Text
+'\\f' Literal.String.Escape
+'(CW$evaltext' Text
+'\\fR' Literal.String.Escape
+' is undefined. (Note also that' Text
+'\n' Text
+
+'each ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`use' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' statement creates a ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`require' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' frame inside an ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`eval EXPR' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'frame.) ' Text
+'\\f' Literal.String.Escape
+'(CW$subroutine' Text
+'\\fR' Literal.String.Escape
+' may also be ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`(unknown)' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' if this particular' Text
+'\n' Text
+
+'subroutine happens to have been deleted from the symbol table.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW$hasargs' Text
+'\\fR' Literal.String.Escape
+' is true if a new instance of ' Text
+'\\f' Literal.String.Escape
+'(CW@_' Text
+'\\fR' Literal.String.Escape
+' was set up for the frame.' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW$hints' Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW$bitmask' Text
+'\\fR' Literal.String.Escape
+' contain pragmatic hints that the caller was' Text
+'\n' Text
+
+'compiled with. The ' Text
+'\\f' Literal.String.Escape
+'(CW$hints' Text
+'\\fR' Literal.String.Escape
+' and ' Text
+'\\f' Literal.String.Escape
+'(CW$bitmask' Text
+'\\fR' Literal.String.Escape
+' values are subject to change' Text
+'\n' Text
+
+'between versions of Perl, and are not meant for external use.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Furthermore, when called from within the ' Text
+'\\s' Literal.String.Escape
+'-1DB' Text
+'\\s' Literal.String.Escape
+'0 package, caller returns more' Text
+'\n' Text
+
+'detailed information: it sets the list variable ' Text
+'\\f' Literal.String.Escape
+'(CW@DB::args' Text
+'\\fR' Literal.String.Escape
+' to be the' Text
+'\n' Text
+
+'arguments with which the subroutine was invoked.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'Be aware that the optimizer might have optimized call frames away before' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`caller' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' had a chance to get the information. That means that ' Text
+'\\f' Literal.String.Escape
+'(CWcaller(N)' Text
+'\\fR' Literal.String.Escape
+'\n' Text
+
+'might not return information about the call frame you expect it do, for' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`N > 1' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'. In particular, ' Text
+'\\f' Literal.String.Escape
+'(CW@DB::args' Text
+'\\fR' Literal.String.Escape
+' might have information from the' Text
+'\n' Text
+
+'previous time ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`caller' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' was called.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chdir \\s-1EXPR\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"chdir cd"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chdir EXPR"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chdir \\s-1FILEHANDLE\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chdir FILEHANDLE"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chdir \\s-1DIRHANDLE\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chdir DIRHANDLE"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chdir"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chdir"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'Changes the working directory to ' Text
+'\\s' Literal.String.Escape
+'-1EXPR' Text
+'\\s' Literal.String.Escape
+'0, if possible. If ' Text
+'\\s' Literal.String.Escape
+'-1EXPR' Text
+'\\s' Literal.String.Escape
+'0 is omitted,' Text
+'\n' Text
+
+'changes to the directory specified by ' Text
+'\\f' Literal.String.Escape
+'(CW$ENV{HOME}' Text
+'\\fR' Literal.String.Escape
+', if set; if not,' Text
+'\n' Text
+
+'changes to the directory specified by ' Text
+'\\f' Literal.String.Escape
+'(CW$ENV{LOGDIR}' Text
+'\\fR' Literal.String.Escape
+'. (Under ' Text
+'\\s' Literal.String.Escape
+'-1VMS' Text
+'\\s' Literal.String.Escape
+'0, the' Text
+'\n' Text
+
+'variable ' Text
+'\\f' Literal.String.Escape
+'(CW$ENV{SYS$LOGIN}' Text
+'\\fR' Literal.String.Escape
+' is also checked, and used if it is set.) If' Text
+'\n' Text
+
+'neither is set, ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`chdir' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' does nothing. It returns true upon success,' Text
+'\n' Text
+
+'false otherwise. See the example under ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`die' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'On systems that support fchdir, you might pass a file handle or' Text
+'\n' Text
+
+"directory handle as argument. On systems that don't support fchdir," Text
+'\n' Text
+
+'passing handles produces a fatal error at run time.' Text
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chmod \\s-1LIST\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"chmod permission mode"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chmod LIST"' Literal.String.Double
+'\n' Text
+
+'Changes the permissions of a list of files. The first element of the' Text
+'\n' Text
+
+'list must be the numerical mode, which should probably be an octal' Text
+'\n' Text
+
+'number, and which definitely should ' Text
+'\\fI' Literal.String.Escape
+'not' Text
+'\\fR' Literal.String.Escape
+' be a string of octal digits:' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW0644' Text
+'\\fR' Literal.String.Escape
+' is okay, ' Text
+'\\f' Literal.String.Escape
+"(CW'0644'" Text
+'\\fR' Literal.String.Escape
+' is not. Returns the number of files' Text
+'\n' Text
+
+'successfully changed. See also ' Text
+'\\*' Literal.String.Escape
+'(L"oct' Text
+'\\*' Literal.String.Escape
+'(R", if all you have is a string.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'6' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+" $cnt = chmod 0755, 'foo', 'bar';" Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' chmod 0755, @executables;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+" $mode = '0644'; chmod $mode, 'foo'; # !!! sets mode to" Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' # --w----r-T' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+" $mode = '0644'; chmod oct($mode), 'foo'; # this is better" Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+" $mode = 0644; chmod $mode, 'foo'; # this is best" Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'On systems that support fchmod, you might pass file handles among the' Text
+'\n' Text
+
+"files. On systems that don't support fchmod, passing file handles" Text
+'\n' Text
+
+'produces a fatal error at run time.' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'3' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' open(my $fh, "<", "foo");' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' my $perm = (stat $fh)[2] & 07777;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' chmod($perm | 0600, $fh);' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'You can also import the symbolic ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`S_I*' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' constants from the Fcntl' Text
+'\n' Text
+
+'module:' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'1' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+" use Fcntl ':mode';" Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'2' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' # This is identical to the chmod 0755 of the above example.' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chomp \\s-1VARIABLE\\s0"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Xref' Literal.String
+' ' Text
+'"chomp INPUT_RECORD_SEPARATOR $ newline eol"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chomp VARIABLE"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+' ' Text
+'0' Literal.Number
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chomp( \\s-1LIST\\s0 )"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chomp( LIST )"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'IP' Keyword
+' ' Text
+'"chomp"' Literal.String.Double
+' ' Text
+'8' Literal.Number
+'\n' Text
+
+'.' Text
+'IX' Keyword
+' ' Text
+'Item' Literal.String
+' ' Text
+'"chomp"' Literal.String.Double
+'\n' Text
+
+'.' Text
+'PD' Keyword
+'\n' Text
+
+'This safer version of ' Text
+'\\*' Literal.String.Escape
+'(L"chop' Text
+'\\*' Literal.String.Escape
+'(R" removes any trailing string' Text
+'\n' Text
+
+'that corresponds to the current value of ' Text
+'\\f' Literal.String.Escape
+'(CW$/' Text
+'\\fR' Literal.String.Escape
+' (also known as' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+'\\f' Literal.String.Escape
+'(CW$INPUT_RECORD_SEPARATOR' Text
+'\\fR' Literal.String.Escape
+' in the ' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`English' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+' module). It returns the total' Text
+'\n' Text
+
+"number of characters removed from all its arguments. It's often used to" Text
+'\n' Text
+
+"remove the newline from the end of an input record when you're worried" Text
+'\n' Text
+
+'that the final record may be missing its newline. When in paragraph' Text
+'\n' Text
+
+'mode (' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`$/ = ""' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+'), it removes all trailing newlines from the string.' Text
+'\n' Text
+
+'When in slurp mode (' Text
+'\\f' Literal.String.Escape
+'(CW' Text
+'\\*' Literal.String.Escape
+'(C`$/ = undef' Text
+'\\*' Literal.String.Escape
+"(C'" Text
+'\\fR' Literal.String.Escape
+') or fixed-length record mode (' Text
+'\\f' Literal.String.Escape
+'(CW$/' Text
+'\\fR' Literal.String.Escape
+' is' Text
+'\n' Text
+
+'a reference to an integer or the like, see perlvar) ' Text
+'\\fI' Literal.String.Escape
+'chomp()' Text
+'\\fR' Literal.String.Escape
+" won't" Text
+'\n' Text
+
+'remove anything.' Text
+'\n' Text
+
+'If ' Text
+'\\s' Literal.String.Escape
+'-1VARIABLE' Text
+'\\s' Literal.String.Escape
+'0 is omitted, it chomps ' Text
+'\\f' Literal.String.Escape
+'(CW$_' Text
+'\\fR' Literal.String.Escape
+'. Example:' Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'.' Text
+'Vb' Keyword
+' ' Text
+'5' Literal.Number
+'\n' Text
+
+'\\&' Literal.String.Escape
+' while (<>) {' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' chomp; # avoid ' Text
+'\\e' Literal.String.Escape
+'n on last field' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' @array = split(/:/);' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' # ...' Text
+'\n' Text
+
+'\\&' Literal.String.Escape
+' }' Text
+'\n' Text
+
+'.' Text
+'Ve' Keyword
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text
+
+'If ' Text
+'\\s' Literal.String.Escape
+'-1VARIABLE' Text
+'\\s' Literal.String.Escape
+"0 is a hash, it chomps the hash's values, but not its keys." Text
+'\n' Text
+
+'.' Text
+'Sp' Keyword
+'\n' Text