{ 'ARRAY - Functions for real @ARRAYs' => { 'each' => { 'desc' => 'retrieve the next key/value pair from a hash', 'usage' => [ 'each HASH', 'each ARRAY', 'each EXPR' ] }, 'keys' => { 'desc' => 'retrieve list of indices from a hash', 'usage' => [ 'keys HASH', 'keys ARRAY', 'keys EXPR' ] }, 'pop' => { 'desc' => 'remove the last element from an array and return it', 'usage' => [ 'pop ARRAY', 'pop EXPR', 'pop' ] }, 'push' => { 'desc' => 'append one or more elements to an array', 'usage' => [ 'push ARRAY,LIST', 'push EXPR,LIST' ] }, 'shift' => { 'desc' => 'remove the first element of an array, and return it', 'usage' => [ 'shift ARRAY', 'shift EXPR', 'shift' ] }, 'splice' => { 'desc' => 'add or remove elements anywhere in an array', 'usage' => [ 'splice ARRAY or EXPR,OFFSET,LENGTH,LIST', 'splice ARRAY or EXPR,OFFSET,LENGTH', 'splice ARRAY or EXPR,OFFSET', 'splice ARRAY or EXPR' ] }, 'unshift' => { 'desc' => 'prepend more elements to the beginning of a list', 'usage' => [ 'unshift ARRAY,LIST', 'unshift EXPR,LIST' ] }, 'values' => { 'desc' => 'return a list of the values in a hash', 'usage' => [ 'values HASH', 'values ARRAY', 'values EXPR' ] } }, 'Binary - Functions for fixed-length data or records' => { 'pack' => { 'desc' => 'convert a list into a binary representation', 'usage' => [ 'pack TEMPLATE,LIST' ] }, 'read' => { 'desc' => 'fixed-length buffered input from a filehandle', 'usage' => [ 'read FILEHANDLE,SCALAR,LENGTH,OFFSET', 'read FILEHANDLE,SCALAR,LENGTH' ] }, 'syscall' => { 'desc' => 'execute an arbitrary system call', 'usage' => [ 'syscall NUMBER, LIST' ] }, 'sysread' => { 'desc' => 'fixed-length unbuffered input from a filehandle', 'usage' => [ 'sysread FILEHANDLE,SCALAR,LENGTH,OFFSET', 'sysread FILEHANDLE,SCALAR,LENGTH' ] }, 'sysseek' => { 'desc' => 'position I/O pointer on handle used with sysread and syswrite', 'usage' => [ 'sysseek FILEHANDLE,POSITION,WHENCE' ] }, 'syswrite' => { 'desc' => 'fixed-length unbuffered output to a filehandle', 'usage' => [ 'syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET', 'syswrite FILEHANDLE,SCALAR,LENGTH', 'syswrite FILEHANDLE,SCALAR' ] }, 'unpack' => { 'desc' => 'convert binary structure into normal perl variables', 'usage' => [ 'unpack TEMPLATE,EXPR', 'unpack TEMPLATE' ] }, 'vec' => { 'desc' => 'test or set particular bits in a string', 'usage' => [ 'vec EXPR,OFFSET,BITS' ] } }, 'File - Functions for filehandles, files, or directories' => { '-X' => { 'desc' => 'a file test (-r, -x, etc)', 'usage' => [ '-X FILEHANDLE', '-X EXPR', '-X DIRHANDLE', '-X' ] }, 'chdir' => { 'desc' => 'change your current working directory', 'usage' => [ 'chdir EXPR', 'chdir FILEHANDLE', 'chdir DIRHANDLE', 'chdir' ] }, 'chmod' => { 'desc' => 'changes the permissions on a list of files', 'usage' => [ 'chmod LIST' ] }, 'chown' => { 'desc' => 'change the ownership on a list of files', 'usage' => [ 'chown LIST' ] }, 'chroot' => { 'desc' => 'make directory new root for path lookups', 'usage' => [ 'chroot FILENAME', 'chroot' ] }, 'fcntl' => { 'desc' => 'file control system call', 'usage' => [ 'fcntl FILEHANDLE,FUNCTION,SCALAR' ] }, 'glob' => { 'desc' => 'expand filenames using wildcards', 'usage' => [ 'glob EXPR', 'glob' ] }, 'ioctl' => { 'desc' => 'system-dependent device control system call', 'usage' => [ 'ioctl FILEHANDLE,FUNCTION,SCALAR' ] }, 'link' => { 'desc' => 'create a hard link in the filesystem', 'usage' => [ 'link OLDFILE,NEWFILE' ] }, 'lstat' => { 'desc' => 'stat a symbolic link', 'usage' => [ 'lstat FILEHANDLE', 'lstat EXPR', 'lstat DIRHANDLE', 'lstat' ] }, 'mkdir' => { 'desc' => 'create a directory', 'usage' => [ 'mkdir FILENAME,MASK', 'mkdir FILENAME', 'mkdir' ] }, 'open' => { 'desc' => 'open a file, pipe, or descriptor', 'usage' => [ 'open FILEHANDLE,EXPR', 'open FILEHANDLE,MODE,EXPR', 'open FILEHANDLE,MODE,EXPR,LIST', 'open FILEHANDLE,MODE,REFERENCE', 'open FILEHANDLE' ] }, 'opendir' => { 'desc' => 'open a directory', 'usage' => [ 'opendir DIRHANDLE,EXPR' ] }, 'readlink' => { 'desc' => 'determine where a symbolic link is pointing', 'usage' => [ 'readlink EXPR', 'readlink' ] }, 'rename' => { 'desc' => 'change a filename', 'usage' => [ 'rename OLDNAME,NEWNAME' ] }, 'rmdir' => { 'desc' => 'remove a directory', 'usage' => [ 'rmdir FILENAME', 'rmdir' ] }, 'stat' => { 'desc' => 'get a file\'s status information', 'usage' => [ 'stat FILEHANDLE', 'stat EXPR', 'stat DIRHANDLE', 'stat' ] }, 'symlink' => { 'desc' => 'create a symbolic link to a file', 'usage' => [ 'symlink OLDFILE,NEWFILE' ] }, 'sysopen' => { 'desc' => 'open a file, pipe, or descriptor', 'usage' => [ 'sysopen FILEHANDLE,FILENAME,MODE', 'sysopen FILEHANDLE,FILENAME,MODE,PERMS' ] }, 'umask' => { 'desc' => 'set file creation mode mask', 'usage' => [ 'umask EXPR', 'umask' ] }, 'unlink' => { 'desc' => 'remove one link to a file', 'usage' => [ 'unlink LIST', 'unlink' ] }, 'utime' => { 'desc' => 'set a file\'s last access and modify times', 'usage' => [ 'utime LIST' ] } }, 'Flow - Keywords related to the control flow of your Perl program' => { '__FILE__' => { 'desc' => 'the name of the current source file', 'usage' => [ '__FILE__' ] }, '__LINE__' => { 'desc' => 'the current source line number', 'usage' => [ '__LINE__' ] }, '__PACKAGE__' => { 'desc' => 'the current package', 'usage' => [ '__PACKAGE__' ] }, '__SUB__' => { 'desc' => 'the current subroutine, or C if not in a subroutine', 'usage' => [ '__SUB__' ] }, 'break' => { 'desc' => 'break out of a C block', 'usage' => [ 'break' ] }, 'caller' => { 'desc' => 'get context of the current subroutine call', 'usage' => [ 'caller EXPR', 'caller' ] }, 'continue' => { 'desc' => 'optional trailing block in a while or foreach', 'usage' => [ 'continue BLOCK', 'continue' ] }, 'die' => { 'desc' => 'raise an exception or bail out', 'usage' => [ 'die LIST' ] }, 'do' => { 'desc' => 'turn a BLOCK into a TERM', 'usage' => [ 'do BLOCK' ] }, 'dump' => { 'desc' => 'create an immediate core dump', 'usage' => [ 'dump LABEL', 'dump' ] }, 'eval' => { 'desc' => 'catch exceptions or compile and run code', 'usage' => [ 'eval EXPR', 'eval BLOCK', 'eval' ] }, 'evalbytes' => { 'desc' => 'similar to string eval, but intend to parse a bytestream', 'usage' => [ 'evalbytes EXPR', 'evalbytes' ] }, 'exit' => { 'desc' => 'terminate this program', 'usage' => [ 'exit EXPR', 'exit' ] }, 'goto' => { 'desc' => 'create spaghetti code', 'usage' => [ 'goto LABEL', 'goto EXPR', 'goto &NAME' ] }, 'last' => { 'desc' => 'exit a block prematurely', 'usage' => [ 'last LABEL', 'last' ] }, 'next' => { 'desc' => 'iterate a block prematurely', 'usage' => [ 'next LABEL', 'next' ] }, 'redo' => { 'desc' => 'start this loop iteration over again', 'usage' => [ 'redo LABEL', 'redo' ] }, 'return' => { 'desc' => 'get out of a function early', 'usage' => [ 'return EXPR', 'return' ] }, 'sub' => { 'desc' => 'declare a subroutine, possibly anonymously', 'usage' => [ 'sub NAME BLOCK', 'sub NAME (PROTO) BLOCK', 'sub NAME : ATTRS BLOCK', 'sub NAME (PROTO) : ATTRS BLOCK' ] }, 'wantarray' => { 'desc' => 'get void vs scalar vs list context of current subroutine call', 'usage' => [ 'wantarray' ] } }, 'HASH - Functions for real %HASHes' => { 'delete' => { 'desc' => 'deletes a value from a hash', 'usage' => [ 'delete EXPR' ] }, 'each' => { 'desc' => 'retrieve the next key/value pair from a hash', 'usage' => [ 'each HASH', 'each ARRAY', 'each EXPR' ] }, 'exists' => { 'desc' => 'test whether a hash key is present', 'usage' => [ 'exists EXPR' ] }, 'keys' => { 'desc' => 'retrieve list of indices from a hash', 'usage' => [ 'keys HASH', 'keys ARRAY', 'keys EXPR' ] }, 'values' => { 'desc' => 'return a list of the values in a hash', 'usage' => [ 'values HASH', 'values ARRAY', 'values EXPR' ] } }, 'I/O - Input and output functions' => { 'binmode' => { 'desc' => 'prepare binary files for I/O', 'usage' => [ 'binmode FILEHANDLE, LAYER', 'binmode FILEHANDLE' ] }, 'close' => { 'desc' => 'close file (or pipe or socket) handle', 'usage' => [ 'close FILEHANDLE', 'close' ] }, 'closedir' => { 'desc' => 'close directory handle', 'usage' => [ 'closedir DIRHANDLE' ] }, 'dbmclose' => { 'desc' => 'breaks binding on a tied dbm file', 'usage' => [ 'dbmclose HASH' ] }, 'dbmopen' => { 'desc' => 'create binding on a tied dbm file', 'usage' => [ 'dbmopen HASH,DBNAME,MASK' ] }, 'die' => { 'desc' => 'raise an exception or bail out', 'usage' => [ 'die LIST' ] }, 'eof' => { 'desc' => 'test a filehandle for its end', 'usage' => [ 'eof FILEHANDLE', 'eof ()', 'eof' ] }, 'fileno' => { 'desc' => 'return file descriptor from filehandle', 'usage' => [ 'fileno FILEHANDLE' ] }, 'flock' => { 'desc' => 'lock an entire file with an advisory lock', 'usage' => [ 'flock FILEHANDLE,OPERATION' ] }, 'format' => { 'desc' => 'declare a picture format with use by the write() function', 'usage' => [ 'format' ] }, 'getc' => { 'desc' => 'get the next character from the filehandle', 'usage' => [ 'getc FILEHANDLE', 'getc' ] }, 'print' => { 'desc' => 'output a list to a filehandle', 'usage' => [ 'print FILEHANDLE LIST', 'print FILEHANDLE', 'print LIST', 'print' ] }, 'printf' => { 'desc' => 'output a formatted list to a filehandle', 'usage' => [ 'printf FILEHANDLE FORMAT, LIST', 'printf FILEHANDLE', 'printf FORMAT, LIST', 'printf' ] }, 'read' => { 'desc' => 'fixed-length buffered input from a filehandle', 'usage' => [ 'read FILEHANDLE,SCALAR,LENGTH,OFFSET', 'read FILEHANDLE,SCALAR,LENGTH' ] }, 'readdir' => { 'desc' => 'get a directory from a directory handle', 'usage' => [ 'readdir DIRHANDLE' ] }, 'readline' => { 'desc' => 'fetch a record from a file', 'usage' => [ 'readline EXPR', 'readline' ] }, 'rewinddir' => { 'desc' => 'reset directory handle', 'usage' => [ 'rewinddir DIRHANDLE' ] }, 'say' => { 'desc' => 'output a list to a filehandle, appending a newline', 'usage' => [ 'say FILEHANDLE LIST', 'say FILEHANDLE', 'say LIST', 'say' ] }, 'seek' => { 'desc' => 'reposition file pointer for random-access I/O', 'usage' => [ 'seek FILEHANDLE,POSITION,WHENCE' ] }, 'seekdir' => { 'desc' => 'reposition directory pointer', 'usage' => [ 'seekdir DIRHANDLE,POS' ] }, 'select' => { 'desc' => 'reset default output or do I/O multiplexing', 'usage' => [ 'select FILEHANDLE', 'select' ] }, 'syscall' => { 'desc' => 'execute an arbitrary system call', 'usage' => [ 'syscall NUMBER, LIST' ] }, 'sysread' => { 'desc' => 'fixed-length unbuffered input from a filehandle', 'usage' => [ 'sysread FILEHANDLE,SCALAR,LENGTH,OFFSET', 'sysread FILEHANDLE,SCALAR,LENGTH' ] }, 'sysseek' => { 'desc' => 'position I/O pointer on handle used with sysread and syswrite', 'usage' => [ 'sysseek FILEHANDLE,POSITION,WHENCE' ] }, 'syswrite' => { 'desc' => 'fixed-length unbuffered output to a filehandle', 'usage' => [ 'syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET', 'syswrite FILEHANDLE,SCALAR,LENGTH', 'syswrite FILEHANDLE,SCALAR' ] }, 'tell' => { 'desc' => 'get current seekpointer on a filehandle', 'usage' => [ 'tell FILEHANDLE', 'tell' ] }, 'telldir' => { 'desc' => 'get current seekpointer on a directory handle', 'usage' => [ 'telldir DIRHANDLE' ] }, 'truncate' => { 'desc' => 'shorten a file', 'usage' => [ 'truncate FILEHANDLE,LENGTH', 'truncate EXPR,LENGTH' ] }, 'warn' => { 'desc' => 'print debugging info', 'usage' => [ 'warn LIST' ] }, 'write' => { 'desc' => 'print a picture record', 'usage' => [ 'write FILEHANDLE', 'write EXPR', 'write' ] } }, 'LIST - Functions for list data' => { 'grep' => { 'desc' => 'locate elements in a list test true against a given criterion', 'usage' => [ 'grep BLOCK LIST', 'grep EXPR,LIST' ] }, 'join' => { 'desc' => 'join a list into a string using a separator', 'usage' => [ 'join EXPR,LIST' ] }, 'map' => { 'desc' => 'apply a change to a list to get back a new list with the changes', 'usage' => [ 'map BLOCK LIST', 'map EXPR,LIST' ] }, 'qw/STRING/' => { 'desc' => 'quote a list of words', 'usage' => [ 'qw/STRING/' ] }, 'reverse' => { 'desc' => 'flip a string or a list', 'usage' => [ 'reverse LIST' ] }, 'sort' => { 'desc' => 'sort a list of values', 'usage' => [ 'sort SUBNAME LIST', 'sort BLOCK LIST', 'sort LIST' ] }, 'unpack' => { 'desc' => 'convert binary structure into normal perl variables', 'usage' => [ 'unpack TEMPLATE,EXPR', 'unpack TEMPLATE' ] } }, 'Math - Numeric functions' => { 'abs' => { 'desc' => 'absolute value function', 'usage' => [ 'abs VALUE', 'abs' ] }, 'atan2' => { 'desc' => 'arctangent of Y/X in the range -PI to PI', 'usage' => [ 'atan2 Y,X' ] }, 'cos' => { 'desc' => 'cosine function', 'usage' => [ 'cos EXPR', 'cos' ] }, 'exp' => { 'desc' => 'raise I to a power', 'usage' => [ 'exp EXPR', 'exp' ] }, 'hex' => { 'desc' => 'convert a string to a hexadecimal number', 'usage' => [ 'hex EXPR', 'hex' ] }, 'int' => { 'desc' => 'get the integer portion of a number', 'usage' => [ 'int EXPR', 'int' ] }, 'log' => { 'desc' => 'retrieve the natural logarithm for a number', 'usage' => [ 'log EXPR', 'log' ] }, 'oct' => { 'desc' => 'convert a string to an octal number', 'usage' => [ 'oct EXPR', 'oct' ] }, 'rand' => { 'desc' => 'retrieve the next pseudorandom number', 'usage' => [ 'rand EXPR', 'rand' ] }, 'sin' => { 'desc' => 'return the sine of a number', 'usage' => [ 'sin EXPR', 'sin' ] }, 'sqrt' => { 'desc' => 'square root function', 'usage' => [ 'sqrt EXPR', 'sqrt' ] }, 'srand' => { 'desc' => 'seed the random number generator', 'usage' => [ 'srand EXPR', 'srand' ] } }, 'Misc - Miscellaneous functions' => { 'defined' => { 'desc' => 'test whether a value, variable, or function is defined', 'usage' => [ 'defined EXPR', 'defined' ] }, 'formline' => { 'desc' => 'internal function used for formats', 'usage' => [ 'formline PICTURE,LIST' ] }, 'lock' => { 'desc' => 'get a thread lock on a variable, subroutine, or method', 'usage' => [ 'lock THING' ] }, 'prototype' => { 'desc' => 'get the prototype (if any) of a subroutine', 'usage' => [ 'prototype FUNCTION' ] }, 'reset' => { 'desc' => 'clear all variables of a given name', 'usage' => [ 'reset EXPR', 'reset' ] }, 'scalar' => { 'desc' => 'force a scalar context', 'usage' => [ 'scalar EXPR' ] }, 'undef' => { 'desc' => 'remove a variable or function definition', 'usage' => [ 'undef EXPR', 'undef' ] } }, 'Modules - Keywords related to Perl modules' => { 'do' => { 'desc' => 'turn a BLOCK into a TERM', 'usage' => [ 'do BLOCK' ] }, 'import' => { 'desc' => 'patch a module\'s namespace into your own', 'usage' => [ 'import LIST' ] }, 'no' => { 'desc' => 'unimport some module symbols or semantics at compile time', 'usage' => [ 'no MODULE VERSION LIST', 'no MODULE VERSION', 'no MODULE LIST', 'no MODULE', 'no VERSION' ] }, 'package' => { 'desc' => 'declare a separate global namespace', 'usage' => [ 'package NAMESPACE', 'package NAMESPACE VERSION', 'package NAMESPACE BLOCK', 'package NAMESPACE VERSION BLOCK' ] }, 'require' => { 'desc' => 'load in external functions from a library at runtime', 'usage' => [ 'require VERSION', 'require EXPR', 'require' ] }, 'use' => { 'desc' => 'load in a module at compile time and import its namespace', 'usage' => [ 'use Module VERSION LIST', 'use Module VERSION', 'use Module LIST', 'use Module', 'use VERSION' ] } }, 'Namespace - Keywords related to scoping' => { 'caller' => { 'desc' => 'get context of the current subroutine call', 'usage' => [ 'caller EXPR', 'caller' ] }, 'import' => { 'desc' => 'patch a module\'s namespace into your own', 'usage' => [ 'import LIST' ] }, 'local' => { 'desc' => 'create a temporary value for a global variable (dynamic scoping)', 'usage' => [ 'local EXPR' ] }, 'my' => { 'desc' => 'declare and assign a local variable (lexical scoping)', 'usage' => [ 'my EXPR', 'my TYPE EXPR', 'my EXPR : ATTRS', 'my TYPE EXPR : ATTRS' ] }, 'our' => { 'desc' => 'declare and assign a package variable (lexical scoping)', 'usage' => [ 'our EXPR', 'our TYPE EXPR', 'our EXPR : ATTRS', 'our TYPE EXPR : ATTRS' ] }, 'package' => { 'desc' => 'declare a separate global namespace', 'usage' => [ 'package NAMESPACE', 'package NAMESPACE VERSION', 'package NAMESPACE BLOCK', 'package NAMESPACE VERSION BLOCK' ] }, 'state' => { 'desc' => 'declare and assign a persistent lexical variable', 'usage' => [ 'state EXPR', 'state TYPE EXPR', 'state EXPR : ATTRS', 'state TYPE EXPR : ATTRS' ] }, 'use' => { 'desc' => 'load in a module at compile time and import its namespace', 'usage' => [ 'use Module VERSION LIST', 'use Module VERSION', 'use Module LIST', 'use Module', 'use VERSION' ] } }, 'Network - Fetching network info' => { 'endprotoent' => { 'desc' => 'be done using protocols file', 'usage' => [ 'endprotoent' ] }, 'endservent' => { 'desc' => 'be done using services file', 'usage' => [ 'endservent' ] }, 'gethostbyaddr' => { 'desc' => 'get host record given its address', 'usage' => [ 'gethostbyaddr ADDR,ADDRTYPE' ] }, 'gethostbyname' => { 'desc' => 'get host record given name', 'usage' => [ 'gethostbyname NAME' ] }, 'gethostent' => { 'desc' => 'get next hosts record', 'usage' => [ 'gethostent' ] }, 'getnetbyaddr' => { 'desc' => 'get network record given its address', 'usage' => [ 'getnetbyaddr ADDR,ADDRTYPE' ] }, 'getnetbyname' => { 'desc' => 'get networks record given name', 'usage' => [ 'getnetbyname NAME' ] }, 'getnetent' => { 'desc' => 'get next networks record', 'usage' => [ 'getnetent' ] }, 'getprotobyname' => { 'desc' => 'get protocol record given name', 'usage' => [ 'getprotobyname NAME' ] }, 'getprotobynumber' => { 'desc' => 'get protocol record numeric protocol', 'usage' => [ 'getprotobynumber NUMBER' ] }, 'getprotoent' => { 'desc' => 'get next protocols record', 'usage' => [ 'getprotoent' ] }, 'getservbyname' => { 'desc' => 'get services record given its name', 'usage' => [ 'getservbyname NAME,PROTO' ] }, 'getservbyport' => { 'desc' => 'get services record given numeric port', 'usage' => [ 'getservbyport PORT,PROTO' ] }, 'getservent' => { 'desc' => 'get next services record', 'usage' => [ 'getservent' ] }, 'sethostent' => { 'desc' => 'prepare hosts file for use', 'usage' => [ 'sethostent STAYOPEN' ] }, 'setnetent' => { 'desc' => 'prepare networks file for use', 'usage' => [ 'setnetent STAYOPEN' ] }, 'setprotoent' => { 'desc' => 'prepare protocols file for use', 'usage' => [ 'setprotoent STAYOPEN' ] }, 'setservent' => { 'desc' => 'prepare services file for use', 'usage' => [ 'setservent STAYOPEN' ] } }, 'Objects - Keywords related to classes and object-orientation' => { 'bless' => { 'desc' => 'create an object', 'usage' => [ 'bless REF,CLASSNAME', 'bless REF' ] }, 'dbmclose' => { 'desc' => 'breaks binding on a tied dbm file', 'usage' => [ 'dbmclose HASH' ] }, 'dbmopen' => { 'desc' => 'create binding on a tied dbm file', 'usage' => [ 'dbmopen HASH,DBNAME,MASK' ] }, 'package' => { 'desc' => 'declare a separate global namespace', 'usage' => [ 'package NAMESPACE', 'package NAMESPACE VERSION', 'package NAMESPACE BLOCK', 'package NAMESPACE VERSION BLOCK' ] }, 'ref' => { 'desc' => 'find out the type of thing being referenced', 'usage' => [ 'ref EXPR', 'ref' ] }, 'tie' => { 'desc' => 'bind a variable to an object class', 'usage' => [ 'tie VARIABLE,CLASSNAME,LIST' ] }, 'tied' => { 'desc' => 'get a reference to the object underlying a tied variable', 'usage' => [ 'tied VARIABLE' ] }, 'untie' => { 'desc' => 'break a tie binding to a variable', 'usage' => [ 'untie VARIABLE' ] }, 'use' => { 'desc' => 'load in a module at compile time and import its namespace', 'usage' => [ 'use Module VERSION LIST', 'use Module VERSION', 'use Module LIST', 'use Module', 'use VERSION' ] } }, 'Process - Functions for processes and process groups' => { 'alarm' => { 'desc' => 'schedule a SIGALRM', 'usage' => [ 'alarm SECONDS', 'alarm' ] }, 'exec' => { 'desc' => 'abandon this program to run another', 'usage' => [ 'exec LIST', 'exec PROGRAM LIST' ] }, 'fork' => { 'desc' => 'create a new process just like this one', 'usage' => [ 'fork' ] }, 'getpgrp' => { 'desc' => 'get process group', 'usage' => [ 'getpgrp PID' ] }, 'getppid' => { 'desc' => 'get parent process ID', 'usage' => [ 'getppid' ] }, 'getpriority' => { 'desc' => 'get current nice value', 'usage' => [ 'getpriority WHICH,WHO' ] }, 'kill' => { 'desc' => 'send a signal to a process or process group', 'usage' => [ 'kill SIGNAL, LIST', 'kill SIGNAL' ] }, 'pipe' => { 'desc' => 'open a pair of connected filehandles', 'usage' => [ 'pipe READHANDLE,WRITEHANDLE' ] }, 'qx/STRING/' => { 'desc' => 'backquote quote a string', 'usage' => [ 'qx/STRING/' ] }, 'readpipe' => { 'desc' => 'execute a system command and collect standard output', 'usage' => [ 'readpipe EXPR', 'readpipe' ] }, 'setpgrp' => { 'desc' => 'set the process group of a process', 'usage' => [ 'setpgrp PID,PGRP' ] }, 'setpriority' => { 'desc' => 'set a process\'s nice value', 'usage' => [ 'setpriority WHICH,WHO,PRIORITY' ] }, 'sleep' => { 'desc' => 'block for some number of seconds', 'usage' => [ 'sleep EXPR', 'sleep' ] }, 'system' => { 'desc' => 'run a separate program', 'usage' => [ 'system LIST', 'system PROGRAM LIST' ] }, 'times' => { 'desc' => 'return elapsed time for self and child processes', 'usage' => [ 'times' ] }, 'wait' => { 'desc' => 'wait for any child process to die', 'usage' => [ 'wait' ] }, 'waitpid' => { 'desc' => 'wait for a particular child process to die', 'usage' => [ 'waitpid PID,FLAGS' ] } }, 'Regexp - Regular expressions and pattern matching' => { 'm//' => { 'desc' => 'match a string with a regular expression pattern', 'usage' => [ 'm/PATTERN/msixpodualgc' ] }, 'pos' => { 'desc' => 'find or set the offset for the last/next m//g search', 'usage' => [ 'pos SCALAR', 'pos' ] }, 'qr/STRING/' => { 'desc' => 'compile pattern', 'usage' => [ 'qr/STRING/msixpodual' ] }, 'quotemeta' => { 'desc' => 'quote regular expression magic characters', 'usage' => [ 'quotemeta EXPR', 'quotemeta' ] }, 's///' => { 'desc' => 'replace a pattern with a string', 'usage' => [] }, 'split' => { 'desc' => 'split up a string using a regexp delimiter', 'usage' => [ 'split /PATTERN/,EXPR,LIMIT', 'split /PATTERN/,EXPR', 'split /PATTERN/', 'split' ] }, 'study' => { 'desc' => 'optimize input data for repeated searches', 'usage' => [ 'study SCALAR', 'study' ] } }, 'Socket - Low-level socket functions' => { 'accept' => { 'desc' => 'accept an incoming socket connect', 'usage' => [ 'accept NEWSOCKET,GENERICSOCKET' ] }, 'bind' => { 'desc' => 'binds an address to a socket', 'usage' => [ 'bind SOCKET,NAME' ] }, 'connect' => { 'desc' => 'connect to a remote socket', 'usage' => [ 'connect SOCKET,NAME' ] }, 'getpeername' => { 'desc' => 'find the other end of a socket connection', 'usage' => [ 'getpeername SOCKET' ] }, 'getsockname' => { 'desc' => 'retrieve the sockaddr for a given socket', 'usage' => [ 'getsockname SOCKET' ] }, 'getsockopt' => { 'desc' => 'get socket options on a given socket', 'usage' => [ 'getsockopt SOCKET,LEVEL,OPTNAME' ] }, 'listen' => { 'desc' => 'register your socket as a server', 'usage' => [ 'listen SOCKET,QUEUESIZE' ] }, 'recv' => { 'desc' => 'receive a message over a Socket', 'usage' => [ 'recv SOCKET,SCALAR,LENGTH,FLAGS' ] }, 'send' => { 'desc' => 'send a message over a socket', 'usage' => [ 'send SOCKET,MSG,FLAGS,TO', 'send SOCKET,MSG,FLAGS' ] }, 'setsockopt' => { 'desc' => 'set some socket options', 'usage' => [ 'setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL' ] }, 'shutdown' => { 'desc' => 'close down just half of a socket connection', 'usage' => [ 'shutdown SOCKET,HOW' ] }, 'socket' => { 'desc' => 'create a socket', 'usage' => [ 'socket SOCKET,DOMAIN,TYPE,PROTOCOL' ] }, 'socketpair' => { 'desc' => 'create a pair of sockets', 'usage' => [ 'socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL' ] } }, 'String - Functions for SCALARs or strings' => { 'chomp' => { 'desc' => 'remove a trailing record separator from a string', 'usage' => [ 'chomp VARIABLE', 'chomp( LIST )', 'chomp' ] }, 'chop' => { 'desc' => 'remove the last character from a string', 'usage' => [ 'chop VARIABLE', 'chop( LIST )', 'chop' ] }, 'chr' => { 'desc' => 'get character this number represents', 'usage' => [ 'chr NUMBER', 'chr' ] }, 'crypt' => { 'desc' => 'one-way passwd-style encryption', 'usage' => [ 'crypt PLAINTEXT,SALT' ] }, 'fc' => { 'desc' => 'return casefolded version of a string', 'usage' => [ 'fc EXPR', 'fc' ] }, 'hex' => { 'desc' => 'convert a string to a hexadecimal number', 'usage' => [ 'hex EXPR', 'hex' ] }, 'index' => { 'desc' => 'find a substring within a string', 'usage' => [ 'index STR,SUBSTR,POSITION', 'index STR,SUBSTR' ] }, 'lc' => { 'desc' => 'return lower-case version of a string', 'usage' => [ 'lc EXPR', 'lc' ] }, 'lcfirst' => { 'desc' => 'return a string with just the next letter in lower case', 'usage' => [ 'lcfirst EXPR', 'lcfirst' ] }, 'length' => { 'desc' => 'return the number of bytes in a string', 'usage' => [ 'length EXPR', 'length' ] }, 'oct' => { 'desc' => 'convert a string to an octal number', 'usage' => [ 'oct EXPR', 'oct' ] }, 'ord' => { 'desc' => 'find a character\'s numeric representation', 'usage' => [ 'ord EXPR', 'ord' ] }, 'pack' => { 'desc' => 'convert a list into a binary representation', 'usage' => [ 'pack TEMPLATE,LIST' ] }, 'q/STRING/' => { 'desc' => 'singly quote a string', 'usage' => [ 'q/STRING/' ] }, 'qq/STRING/' => { 'desc' => 'doubly quote a string', 'usage' => [ 'qq/STRING/' ] }, 'reverse' => { 'desc' => 'flip a string or a list', 'usage' => [ 'reverse LIST' ] }, 'rindex' => { 'desc' => 'right-to-left substring search', 'usage' => [ 'rindex STR,SUBSTR,POSITION', 'rindex STR,SUBSTR' ] }, 'sprintf' => { 'desc' => 'formatted print into a string', 'usage' => [ 'sprintf FORMAT, LIST' ] }, 'substr' => { 'desc' => 'get or alter a portion of a string', 'usage' => [ 'substr EXPR,OFFSET,LENGTH,REPLACEMENT', 'substr EXPR,OFFSET,LENGTH', 'substr EXPR,OFFSET' ] }, 'tr///' => { 'desc' => 'transliterate a string', 'usage' => [ 'tr/SEARCHLIST/REPLACEMENTLIST/cdsr' ] }, 'uc' => { 'desc' => 'return upper-case version of a string', 'usage' => [ 'uc EXPR', 'uc' ] }, 'ucfirst' => { 'desc' => 'return a string with just the next letter in upper case', 'usage' => [ 'ucfirst EXPR', 'ucfirst' ] }, 'y///' => { 'desc' => 'transliterate a string', 'usage' => [ 'tr/SEARCHLIST/REPLACEMENTLIST/cdsr' ] } }, 'SysV - System V interprocess communication functions' => { 'msgctl' => { 'desc' => 'SysV IPC message control operations', 'usage' => [ 'msgctl ID,CMD,ARG' ] }, 'msgget' => { 'desc' => 'get SysV IPC message queue', 'usage' => [ 'msgget KEY,FLAGS' ] }, 'msgrcv' => { 'desc' => 'receive a SysV IPC message from a message queue', 'usage' => [ 'msgrcv ID,VAR,SIZE,TYPE,FLAGS' ] }, 'msgsnd' => { 'desc' => 'send a SysV IPC message to a message queue', 'usage' => [ 'msgsnd ID,MSG,FLAGS' ] }, 'semctl' => { 'desc' => 'SysV semaphore control operations', 'usage' => [ 'semctl ID,SEMNUM,CMD,ARG' ] }, 'semget' => { 'desc' => 'get set of SysV semaphores', 'usage' => [ 'semget KEY,NSEMS,FLAGS' ] }, 'semop' => { 'desc' => 'SysV semaphore operations', 'usage' => [ 'semop KEY,OPSTRING' ] }, 'shmctl' => { 'desc' => 'SysV shared memory operations', 'usage' => [ 'shmctl ID,CMD,ARG' ] }, 'shmget' => { 'desc' => 'get SysV shared memory segment identifier', 'usage' => [ 'shmget KEY,SIZE,FLAGS' ] }, 'shmread' => { 'desc' => 'read SysV shared memory', 'usage' => [ 'shmread ID,VAR,POS,SIZE' ] }, 'shmwrite' => { 'desc' => 'write SysV shared memory', 'usage' => [ 'shmwrite ID,STRING,POS,SIZE' ] } }, 'Time - Time-related functions' => { 'gmtime' => { 'desc' => 'convert UNIX time into record or string using Greenwich time', 'usage' => [ 'gmtime EXPR', 'gmtime' ] }, 'localtime' => { 'desc' => 'convert UNIX time into record or string using local time', 'usage' => [ 'localtime EXPR', 'localtime' ] }, 'time' => { 'desc' => 'return number of seconds since 1970', 'usage' => [ 'time' ] }, 'times' => { 'desc' => 'return elapsed time for self and child processes', 'usage' => [ 'times' ] } }, 'User - Fetching user and group info' => { 'endgrent' => { 'desc' => 'be done using group file', 'usage' => [ 'endgrent' ] }, 'endhostent' => { 'desc' => 'be done using hosts file', 'usage' => [ 'endhostent' ] }, 'endnetent' => { 'desc' => 'be done using networks file', 'usage' => [ 'endnetent' ] }, 'endpwent' => { 'desc' => 'be done using passwd file', 'usage' => [ 'endpwent' ] }, 'getgrent' => { 'desc' => 'get next group record', 'usage' => [ 'getgrent' ] }, 'getgrgid' => { 'desc' => 'get group record given group user ID', 'usage' => [ 'getgrgid GID' ] }, 'getgrnam' => { 'desc' => 'get group record given group name', 'usage' => [ 'getgrnam NAME' ] }, 'getlogin' => { 'desc' => 'return who logged in at this tty', 'usage' => [ 'getlogin' ] }, 'getpwent' => { 'desc' => 'get next passwd record', 'usage' => [ 'getpwent' ] }, 'getpwnam' => { 'desc' => 'get passwd record given user login name', 'usage' => [ 'getpwnam NAME' ] }, 'getpwuid' => { 'desc' => 'get passwd record given user ID', 'usage' => [ 'getpwuid UID' ] }, 'setgrent' => { 'desc' => 'prepare group file for use', 'usage' => [ 'setgrent' ] }, 'setpwent' => { 'desc' => 'prepare passwd file for use', 'usage' => [ 'setpwent' ] } } }