-----------------------------------------------------------------------
Status of the Perl port to Windows NT.
version: 1.0 (Alpha release)
date:    4/22/93

This is a list of perl features (taken from the Perl Reference Guide
and the book Programming Perl) and their status in the port of Perl to
NT. The baseline source for the port is perl 4.036 (version 4, patch
level 36). 

The format of the listing is: the perl feature in the first column,
it's status in the next column, and an optional comment about the
current implementation in the third and final column. A multi line
description of the feature may follow the feature/status/comment line
and is always terminated by a blank line.

Status Keys:

    Tested      - Checked by the Perl Test Suite or by regression
                  test or by programmer usage.

    Untested    - Status unknown, may or may not work as described in
                  the perl reference guide, "Programming Perl" or the
                  Perl manual page.

    N/A         - Not Applicable. This feature is not planned to be
                  ported to NT.

    NYI         - Not Yet Implemented. Porting is planned but has not
                  yet been started.


-----------------------------------------------------------------------
Command line options
-----------------------------------------------------------------------

-a                  Tested
    Turns on autosplit mode when used with -n or -p.

-c                  Tested
    Checks syntax but does not execute.

-d                  Tested              
    Runs the script under the debugger.

-D                  Tested
    Sets debugging flags. 

-e                  Tested
    Used to enter one line of script.

-i                  Tested
    Files processed by the <> construct are to be edited in-place. 

-I                  NYI
    Used with -P; tells the C preprocessor where to look for include
    files. Prepends argument to @INC.
    
-l                  Tested
    Enables automatic line ending processing.

-n                  Tested
    Assumes an input loop around your script. Lines are not printed. 

-p                  Tested
    Assumes an input loop around your script. Lines are printed. 

-P                  NYI
    Runs the C preprocessor on the script before compilation by perl. 

-s                  Untested
    Interprets "-xxx" on the command line as switches and sets the 
    corresponding variables $xxx in the script. 

-S                  Tested
    Uses the PATH environment variable to search for the script. 

-u                  N/A         No core facility in NT.
    Dumps core after compiling the script.

-U                  NYI
    Allows perl to do unsafe operations.

-v                  Tested
    Prints the version and patchlevel of your perl executable. 

-w                  Tested
    Prints warnings about possible spelling errors and other
    error-prone constructs in the script. 

-x                  Untested
    Extracts perl program from input stream.

-0                  Tested
    Designates an initial value for the record terminator $/. 


-----------------------------------------------------------------------
Literals - Constants within Perl source programs
-----------------------------------------------------------------------

Numeric:            Tested

String: 
       "abc"        Tested
       `command`    Tested

Array:              Tested

Associative array:  Tested

Filehandles:        Tested
    Pre-defined: 
        <STDIN>     Tested
        <STDOUT>    Tested
        <STDERR>    Tested
        <ARGV>      Tested
        <DATA>      Tested

    User-specified: 
        <<handle>>  Tested
        <$<var>>    Tested
        <>          Tested

Globs:              Tested

Here-Is:            Tested

Special tokens:
    __FILE__        Tested
    __LINE__        Tested
    __END__         Tested


-----------------------------------------------------------------------
Variables
-----------------------------------------------------------------------
References to all types of variables within perl source.

$var                Tested

$var[28]            Tested

$var{'Feb'}         Tested

$#var               Tested

@var                Tested

@var[3,4,5]         Tested

@var{'a','b'}       Tested

%var                Tested

$var{'a',1,...}     Tested

*<name>             Tested


-----------------------------------------------------------------------
Statements
-----------------------------------------------------------------------
Perl source statements.

if                  Tested

unless              Tested

while               Tested

until               Tested

for                 Tested

foreach             Tested

continue            Tested

do <block> while    Tested

do <block> until    Tested



-----------------------------------------------------------------------
Flow control
-----------------------------------------------------------------------
Flow of control statements

do <block>          Tested

do <subroutine>(LIST) Tested

do <FILENAME>       Tested

goto <label>        Tested

last [<label>]      Tested

next [<label>]      Tested

redo [<label>]      Tested

return <expr>       Tested


-----------------------------------------------------------------------
Operators
-----------------------------------------------------------------------
+                   Tested      Addition
-                   Tested      Subtraction
*                   Tested      Multiplication
/                   Tested      Division
%                   Tested      Modulo
|                   Tested      Bit-wise or
&                   Tested      Bit-wise and
^                   Tested      Bit-wise xor
>>                  Tested      Right shift
<<                  Tested      Left shift
**                  Tested      Expontentiation
.                   Tested      Contatenation
x                   Tested      Repetition
++                  Tested      auto-increment
--                  Tested      auto-decrement
? :                 Tested      Alternation
||                  Tested      Logical or
&&                  Tested      Logical and
==                  Tested      Numeric Equality
!=                  Tested      Numeric Inequality
eq                  Tested      String Equality
ne                  Tested      String Inequality
<                   Tested      Numeric Greater than
>                   Tested      Numeric less than
lt                  Tested      String less than
gt                  Tested      String greater than
<=                  Tested      Numeric less than or equal to
>=                  Tested      Numeric greater than or equal to
le                  Tested      String less than or equal to
ge                  Tested      String greater than or equal to
<=>                 Tested      Numeric compare
cmp                 Tested      String compare
=~                  Tested      Search pattern, substitution, or translation
!~                  Tested      Negated version of above
..                  Tested      Enumeration
,                   Tested      Comma operator


-----------------------------------------------------------------------
File test operators
-----------------------------------------------------------------------

-r                  Tested
    File is readable by effective uid/gid

-w                  Tested
    File is writable by effective uid/gid

-x                  Tested      Only checks for .com, .exe, .cmd, or .bat
    File is executable by effective uid/gid

-R                  Tested      Same as -r
    File is readable by real uid/gid.

-W                  Tested      Same as -w
    File is writeable by real uid/gid.

-X                  Tested      Only checks for .com, .exe, .cmd, or .bat
    File is executable by real uid/gid.

-o                  Tested      always returns true on FAT (planned to work on NTFS)
    File is owned by effective uid.

-O                  Tested      always returns true on FAT (planned to work on NTFS)
    File is owned by real uid.

-e                  Tested
    File exists.

-z                  Tested
    File has zero size.

-s                  Tested
    File exists and has non-zero size.

-f                  Tested
    File is a plain file.

-d                  Tested
    File is a directory.

-l                  N/A         No symbolic links in NT.
    File is a symbolic link.

-S                  Tested      Currently returns false for all files
    File is a socket.

-p                  NYI         Currently returns false for all files
    File is a named pipe (FIFO).

-b                  N/A         No concept of special files
    File is a block special file.

-c                  N/A         No concept of special files
    File is a character special file.

-u                  N/A         No setuid bit in NT.
    File has setuid bit set.

-g                  N/A         No setgid bit in NT.
    File has setgid bit set.

-k                  N/A         No sticky bit in NT
    File has sticky bit set.

-t                  Tested
    Tests if filehandle is opened to a tty.

-T                  Tested
    File is a text file.

-B                  Tested
    File is a binary file.

-M                  Tested      Needs more testing
    File creation time.

-A                  Tested      Needs more testing
    File access time.

-C                  Tested      Needs more testing
    File inode change time.


-----------------------------------------------------------------------
Arithmetic functions
-----------------------------------------------------------------------

atan2               Tested
    Returns the arctangent of <Y>/<X> in the range -pi to pi.

cos                 Tested
    Returns the cosine of <expr> (expressed in radians).

exp                 Tested
    Returns e to the power of <expr>.

int                 Tested
    Returns the integer portion of <expr>.

log                 Tested
    Returns natural logarithm (base e) of <expr>.

rand                Tested
    Returns a random fractional number between 0 and the value of <expr>.

sin                 Tested
    Returns the sine of <expr> (expressed in radians).

sqrt                Tested
    Return the square root of <expr>.

srand               Tested
    Sets the random number seed for the rand operator.

time                Tested
    Returns the number of seconds since January 1, 1970

-----------------------------------------------------------------------
Conversion functions
-----------------------------------------------------------------------

gmtime              Tested
    Converts a time as returned by the time function to a 9-element 
    array ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, 
    $isdst) with the time analyzed for the Greenwich timezone.

hex                 Tested
    Returns the decimal value of <expr> interpreted as an hex string.

localtime           Tested
    Converts a time as returned by the time function to a 9-element 
    array with the time analyzed for the local timezone. 

oct                 Tested
    Returns the decimal value of <expr> interpreted as an octal
    string.

ord                 Tested
    Returns the ascii value of the first character of <expr>.

vec                 Tested
    Treats <expr> as a string of unsigned ints, and yields the bit at 
    <offset>. <bits> must be between 1 and 32. May be used as an
    lvalue. 


-----------------------------------------------------------------------
Structure conversion
-----------------------------------------------------------------------

pack                Tested      Could use more extensive testing.
    Packs the values into a binary structure using <template>.

unpack              Tested      Could use more extensive testing.
    Unpacks the structure <expr> into an array, using <template>.


-----------------------------------------------------------------------
String functions
-----------------------------------------------------------------------

chop                Tested
    Chops off the last character on all elements of the list; returns the
    last chopped character.

crypt               NYI         May not be implemented.
    Encrypts a string.

eval(EXPR)          Tested
   <expr> is parsed and executed as if it were a perl program.

eval{    }          Tested
    Executes the code between { and }.

index               Tested
    Returns the position of <substr> in <str> at or after <offset>.

length              Tested
    Returns the length in characters of the value of <expr>.

rindex              Tested
    Returns the position of the last <substr> in <str> at or
    before <offset>.

substr              Tested
   Extracts a substring out of <expr> and returns it.


-----------------------------------------------------------------------
Array and list functions
-----------------------------------------------------------------------

delete              Tested
    Deletes the specified value from the specified associative array.

each                Tested
    Returns a 2-element array consisting of the key and value for the next
    value of an associative array.

grep                Tested
    Evaluates <expr> for each element of the <list>, locally setting
    $_ to refer to the element.

join                Tested
    Joins the separate strings of <list> into a single string with fields
    separated by the value of <expr>, and returns the string.

keys                Tested
    Returns an array with of all the keys of the named
    associative array.

pop                 Tested
    Pops and returns the last value of the array, shortens the array by 1. 

push                Tested
   Pushes the values of <list> onto the end of <array>.

reverse             Tested
    In array context: returns the <list> in reverse order. 
    In scalar context: returns the first element of <list> with bytes
    reversed.  

scalar(@array)      Tested
   Returns the number of elements in the array.

scalar(%array)      Tested
    Returns TRUE if the associative array has elements defined.

shift               Tested
    Shifts the first value of the array off and returns it, shortening the
    array by 1 and moving everything down.
 
sort                Tested
    Sorts the <list> and returns the sorted array value.

splice              Tested
    Removes the elements of @<array> designated by <offset> and
    <length>, and replaces them with <list> (if specified). 

split               Tested
    Splits a string into an array of strings, and returns it.

unshift             Tested
    Prepends list to the front of the array, and returns the number of
    elements in the new array.

values              Tested
    Returns a normal array consisting of all the values of the named
    associative array. 


-----------------------------------------------------------------------
File operations
-----------------------------------------------------------------------

chmod               Tested      execute bit has no meaning
    Changes the permissions of a list of files. 

chown               NYI
    Changes the owner and group of a list of files.

truncate            Tested
    truncates <file> to <size>.

link                N/A         No links in NT.
    Creates a new filename linked to the old filename.

lstat               N/A         No symbolic links in NT.
    Like stat, but does not traverse a final symbolic link.

mkdir               Tested
    Creates a directory with given permissions. Sets $! on failure.

readlink            N/A         No links in NT.
    Returns the value of a symbolic link.

rename              Tested
    Changes the name of a file.

rmdir               Tested
    Deletes the directory if it is empty.

stat                Tested      Minimal testing, some fields have no meaning.
    Returns a 13-element array ($dev, $ino, $mode, $nlink, $uid, $gid,
    $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks).

symlink             N/A         No symbolic links in NT.
    Creates a new filename symbolically linked to the old filename.

unlink              Tested
    Deletes a list of files.

utime               Tested      see relnotes.txt for problems.
    Changes the access and modification times.


-----------------------------------------------------------------------
Directory reading routines
-----------------------------------------------------------------------

closedir            Tested
    Closes a directory opened by opendir.

opendir             Tested
    Opens a directory on the handle specified.

readdir             Tested
    Returns the next entry (or an array of entries) in the directory.

rewinddir           Tested
    Positions the directory to the beginning.

seekdir             Tested
    Sets position for readdir on the directory.

telldir             Tested
    Returns the postion in the directory.


-----------------------------------------------------------------------
Input / Output
-----------------------------------------------------------------------

binmode             Tested
    Arranges for the file opened on <filehandle> to be read in "binary"
    mode as opposed to "text" mode (MS-DOS only). 

close               Tested
    Closes the file or pipe associated with the file handle.

dbmclose            NYI
    Breaks the binding between the array and the dbm file.

dbmopen             NYI
    Binds a dbm or ndbm file to the associative array.

eof                 Tested
    Returns the eof status.

fcntl               N/A         No corresponding facility in NT.
    Implements the  fcntl(2) function.

fileno              N/A         May be implemented.
    Returns the file descriptor for a given (open) file.

flock               NYI         May not be implemented.
    Calls flock(2) on the file.

getc                Tested
   Yields the next character from the file, or "" on EOF. 

ioctl               N/A         No corresponding facility in NT.
    Performs ioctl(2) on the file.

open                Tested
    Opens a file and associates it with <filehandle>.

pipe                N/A         Not useful since there is no fork.
    Returns a pair of connected pipes.

print               Tested
    Prints a string or a comma-separated list of strings.

printf              Tested
    Equivalent to print <filehandle> sprintf(<list>).

read                Tested
    Read <length> binary bytes from the file into the variable at
    <offset>.

seek                Tested
    Arbitrarily positions the file.

select(file-handle) Tested
    Returns the currently selected filehandle. 
    Sets the current default filehandle for output operations if
    <filehandle> is supplied.

select              NYI         Socket version.
    Performs a select(2) system call with the same parameters.
    
sprintf             Tested
    Returns a string formatted by (almost all of) the usual printf
    conventions. 

sysread             NYI         May not be implemented.
    Reads <length> bytes into $<var> at <offset>.

syswrite            NYI         May not be implemented.
    Writes <length> bytes from <scalar> at <offset>.

tell                Tested
    Returns the current file position for the file.

write               Tested      Needs more testing.
    Writes a formatted record to the specified file, using the format
    associated with that file.


-----------------------------------------------------------------------
Search and replace functions
-----------------------------------------------------------------------

/<pattern>/         Tested
     Searches <expr> for a pattern.
    
?<pattern>?         Tested
    This is just like the /<pattern>/ search, except that it matches
    only once between calls to the reset operator. 

s/<pat>/<rep>/      Tested
    Searches a string for a pattern, and if found, replaces that pattern
    with the replacement text and returns the number of substitutions
    made.

study               Tested
    Study the contents of $<var> in anticipation of doing many pattern
    matches on the contents before it is next modified.

tr/<search>/<rep>/  Tested
    Translates all occurrences of the characters found in the search list
    with the corresponding character in the replacement list.


-----------------------------------------------------------------------
System interaction
-----------------------------------------------------------------------

alarm               NYI
    Schedules a SIGALRM to be delivered after <expr> seconds. 

chdir               Tested
    Changes the working directory, $ENV{"HOME"} if <expr> is omitted.

chroot              N/A         No single "root" in NT file systems.
    Changes the root directory for the process and its children.

die                 Tested
    Prints the value of <list> to STDERR and exits with the current
    value of $! (errno).

exec                Tested
    Executes the system command in <list>; does not return.

exit                Tested
    Exits immediately with the value of EXPR.

fork                N/A         See relnotes.txt (Processes)
   Does a fork(2) system call.

getlogin            NYI
    Returns the current login name as known by the system.

getpgrp             N/A         See relnotes.txt (Processes)
    Returns the process group for process <pid> (0, or omitted,  means the
    current process). 

getppid             N/A         See relnotes.txt (Processes)
    Returns the process id of the parent process.

getpriority         NYI
    Returns the current priority for a process, process group, or user.

kill                NYI
    Sends a signal to a list of processes.

setpgrp             N/A         See relnotes.txt (Processes)
    Sets the process group for the <pid> (0 = current process).

setpriority         NYI
    Sets the current priority for a process, process group, or a user.

sleep               Tested
    Causes the script to sleep for <expr> seconds, or forever if no
    <expr>.

syscall             N/A         See relnotes.txt (System Calls)
    Calls the system call specified in the first element of the list,
    passing the rest of the list as arguments to the call. 

system              Tested
    Does exactly the same thing as exec <list> except that a fork is
    done first, and the parent process waits for the child process to
    complete.

times               NYI
    Returns a 4-element array ($user, $system, $cuser, $csystem) giving
    the user and system times, in seconds, for this process and the
    children of this process.

umask               N/A
    Sets the umask for the process and returns the old one. If <expr> is
    omitted, returns current umask value. 

wait                N/A     
    Waits for a child process to terminate and returns the pid of the
    deceased process (-1 if none).

waitpid             N/A
    Performs the same function as the corresponding system call.

warn                Tested
    Prints the message on STDERR like die, but doesn't exit.


-----------------------------------------------------------------------
Networking
-----------------------------------------------------------------------

accept              Untested
    Accepts a new socket.

bind                Tested		Needs more extensive testing.
    Binds the <name> to the <socket>.

connect             Tested		Needs more extensive testing.
    Connects the <name> to the <socket>.

getpeername         Untested
    Returns the socket address of the other end of the <socket>.

getsockname         Untested
    Returns the name of the socket.

getsockopt          Untested
    Returns the socket options.

listen              Untested
    Starts listening on the specified <socket>.

recv                Tested		Needs more extensive testing.
    Receives a message on <socket>.

send                Tested		Needs more extensive testing.
    Sends a message on the <socket>.

setsockopt          Untested
    Sets the requested socket option.

shutdown            Untested
    Shuts down a <socket>.

socket              Tested		Needs more extensive testing.
    Creates a <socket> in <domain> with <type> and <protocol>.

socketpair          N/A			No Unix-domain sockets provided by winsock.
    Same as socket, but creates a pair of bi-directional sockets.


-----------------------------------------------------------------------
SystemV IPC
-----------------------------------------------------------------------

msgctl              N/A     No message facility in NT.

msgget              N/A     No message facility in NT.

msgsnd              N/A     No message facility in NT.

msgrcv              N/A     No message facility in NT.

semctl              N/A     May consider NT ipc implementation later.

semget              N/A     May consider NT ipc implementation later.

semop               N/A     May consider NT ipc implementation later.

shmctl              N/A     May consider NT ipc implementation later.

shmget              N/A     May consider NT ipc implementation later.

shmread             N/A     May consider NT ipc implementation later.

shmwrite            N/A     May consider NT ipc implementation later.


-----------------------------------------------------------------------
Miscellaneous
-----------------------------------------------------------------------

caller              Tested
   Returns an array ($package,$file,$line,...) for a specific subroutine
    call.

defined             Tested
    Tests whether the lvalue <expr> has a real value.

dump                N/A         No core facility in NT.
  Immediate core dump. 

local               Tested
    Creates a scope for the listed variables local to the enclosing block,
    subroutine or eval. 

package             Tested
    Designates the remainder of the current block as a package.

require             Tested
    Includes the specified file from the perl library.

reset               Tested
    Resets ?? searches so that they work again.

scalar              Tested
    Forces evaluation of <expr> in scalar context.

sub                 Tested
    Designates <name> as a subroutine.

undef               Tested
    Undefines the <lvalue>.

wantarray           Tested
    Returns true if the current context expects an array value.


-----------------------------------------------------------------------
Info from system files
-----------------------------------------------------------------------

PASSWD
endpwent            N/A     Possible registry access instead.
getpwent            N/A     Possible registry access instead.
getpwnam            N/A     Possible registry access instead.
getpwuid            N/A     Possible registry access instead.
setpwent            N/A     Possible registry access instead.

GROUP
endgrent            N/A     Possible registry access instead.
getgrgid            N/A     Possible registry access instead.
getgrnam            N/A     Possible registry access instead.
getgrent            N/A     Possible registry access instead.
setgrent            N/A     Possible registry access instead.

HOSTS
endhostent          NYI
    Ends lookup processing.

gethostbyaddr       NYI
    Gets info by address.

gethostbyname       Tested
    Gets info by name.

gethostent          NYI
    Gets next info.

sethostent          NYI
    Resets lookup processing.

NETWORKS
endnetent           NYI
    Ends lookup processing.

getnetbyaddr        NYI
    Gets info by address and type.

getnetbyname        NYI
    Gets info by name.

getnetent           NYI
    Gets next info.

setnetent           NYI
    Resets lookup processing.

SERVICES
endservent          NYI
    Ends lookup processing.

getservbyname       Tested
    Gets info by name.

getservbyport       NYI
    Gets info by port.

getservent          NYI
    Gets next info.

setservent          NYI
    Resets lookup processing.

PROTOCOLS
endprotoent         NYI
    Ends lookup processing.

getprotobyname      Tested
    Gets info by name.

getprotobynumber    NYI
    Gets info by number.

getprotoent         NYI
    Gets next info.

setprotoent         NYI
    Resets lookup processing.


-----------------------------------------------------------------------
Regular expressions
-----------------------------------------------------------------------

.                   Tested
    Matches an arbitrary character, but not a newline.

(...)               Tested
    Groups a series of pattern elements to a single element.

+                   Tested
    Matches the preceding pattern element one or more times.

?                   Tested
    Matches zero or one times.

*                   Tested
    Matches zero or more times.

{<n>,<m>}           Tested
    Denotes the minimum <n> and maximum <m> match count.

[...]               Tested
    Denotes a class of characters to match. [^...] negates the class.

(...|...|...)       Tested
    Matches one of the alternatives.

\w                  Tested
    Matches alphanumeric, including "_", \W matches non-alphanumeric.

\b                  Tested
    Matches word boundaries, \B matches non-boundaries.

\s                  Tested
    Matches whitespace, \S matches non-whitespace.

\d                  Tested
    Matches numeric, \D matches non-numeric.

\n                  Tested
    Newline.

\r                  Tested
    Carriage return.

\f                  Tested
    Form Feed.

\t                  Tested
    Horizontal Tab.


-----------------------------------------------------------------------
Special Variables
-----------------------------------------------------------------------

$_                  Tested
    The default input and pattern-searching space.

$.                  Tested
    The current input line number of the last filehandle that was read.

$/                  Tested
    The input record separator, newline by default. May be multi-character.

$,                  Tested
    The output field separator for the print operator.

$"                  Tested
    The separator which joins elements of arrays interpolated in strings.

$\                  Tested
    The output record separator for the print operator.

$#                  Tested
    The output format for printed numbers. Initial value is "%.20g".

$*                  Tested
    Set to 1 to do multiline matching within a string, 0 to assume strings
    contain a single line. Default is 0. 

$?                  Untested
    The status returned by the last `<command>`, pipe close or
    system operator. 

$]                  Tested
    The perl version string (as displayed with perl -v), or version number.

$[                  Tested
    The index of the first element in an array, and of the first character
    in a substring. Default is 0. 
 
$;                  Untested
    The subscript separator for multi-dimensional array emulation. Default
    is "\034". 

$!                  Tested
    If used in a numeric context, yields the current value of errno. If
    used in a string context, yields the corresponding error string. 

$@                  Tested
    The perl error message from the last eval or do <expr> command.

$:                  Untested
    The set of characters after which a string may be broken to fill
    continuation fields (starting with "^") in a format. 

$0                  Tested
    The name of the file containing the perl script being executed. May be
    assigned to. 

$$                  Tested
    The process number of the perl running this script.

$<                  NYI
    The real uid of this process.

$>                  NYI
    The effective uid of this process. 

$(                  N/A         See relnotes.txt (Users and Groups)
    The real gid of this process.

$)                  N/A         See relnotes.txt (Users and Groups)
    The effective gid of this process.

$^D                 Untested
    The debug flags as passed to perl using -D .

$^F                 NYI
    The highest system file descriptor, ordinarily 2.

$^I                 Tested
    In-place edit extension as passed to perl using -i .

$^L                 Tested
    Formfeed character used in formats.

$^P                 Tested
    Internal debugging flag.

$^T                 Tested
    The time (as delivered by time}) when the program started. This
    value is used by the file test operators "-M", "-A" and
    "-C".

$^W                 Tested
    The value if the -w option as passed to perl.

$^X                 Tested
    The name by which this perl was invoked.

$%                  Tested
    The current page number of the currently selected output channel.

$=                  Tested
    The page length of the current output channel. Default is 60 lines.

$-                  Tested
    The number of lines left on the page.

$~                  Tested
    The name of the current report format.

$^                  Tested
    The name of the current top-of-page format.

$|                  Tested
    If set to nonzero, forces a flush after every write or print on the
    currently selected output channel. Default is 0. 

$ARGV               Tested
    The name of the current file when reading from <> .

$&                  Tested
    The string matched by the last successful pattern match.

$`                  Tested
    The string preceding what was matched by the last successful match.

$'                  Tested
    The string following what was matched by the last successful match. 


$+                  Tested
    The last bracket matched by the last search pattern.


-----------------------------------------------------------------------
Special arrays
-----------------------------------------------------------------------

@ARGV               Tested
    Contains the command line arguments for the script (not including
    the command name). 

@INC                Tested
    Contains the list of places to look for perl scripts to be evaluated
    by the do <filename> and require commands. 

@_                  Tested
    Parameter array for subroutines. Also used by split if not in
    array context. 

%ENV                Tested
    Contains the current environment.

%INC                Tested
    List of files that have been required or done.

%SIG                Tested
    Used to set signal handlers for various signals.


-----------------------------------------------------------------------
The perl debugger
-----------------------------------------------------------------------

h                   Tested
    Prints out a help message.

T                   Tested
    Stack trace.

s                   Tested
    Single steps.

n                   Tested
    Single steps around subroutine call.

r                   Tested
    Returns from the current subroutine.

c                   Tested
    Continues (until <line>, or another breakpoint or exit).

<ret>               Tested
    Repeats last s or n.

l                   Tested
    Lists a range of lines.

f                   Tested
    Switches to <file> and start listing it.

-                   Tested
    Lists previous window.

w                   Tested
    Lists window around current line.

l                   Tested
    Lists the named <sub>routine or current source window.

/<pattern>/         Tested
    Forward search for <pattern>.

?<pattern>?         Tested
    Backward search for <pattern>.

L                   Tested
    Lists lines that have breakpoints or actions.

S                   Tested
    List the names of all subroutines.

t                   Tested
    Toggles trace mode.

b                   Tested

d                   Tested
    Deletes breakpoint at the given line.

D                   Tested
    Deletes all breakpoints.

a                   Tested
    Sets an action for line.

A                   Tested
    Deletes all line actions.

< <command>         Tested
    Sets an action to be executed before every debugger prompt.

> <command>         Tested
    Sets an action to be executed before every s, c or n command.

V                   Tested
    Lists all variables in a package. Default package is main.

X                   Tested
    Like V, but assumes current package.

!                   Tested
    Redo a debugging command. Default is previous command.

H                   Tested
    Displays the last -<number> commands of more than one letter.

q                   Tested
    Quits. You may also use your <eof> character.

<command>           Tested
    Executes <command> as a perl statement.

p EXPR              Tested
    Prints <expr>.

=                   Tested
    Sets alias, or lists current aliases.


-----------------------------------------------------------------------
Environment variables
-----------------------------------------------------------------------

HOME                Tested
    Used if chdir has no argument.

LOGDIR              Tested
    Used if chdir has no argument and HOME is not set.

PATH                Tested
    Used in executing subprocesses, and in finding the perl script if -S
    is used.

PERLLIB             Tested
    A semi-colon separated list of directories to look for perl
    library files before looking in the standard library and the
    current directory. 

PERLDB              Tested
    The command to get the debugger code.


-----------------------------------------------------------------------
Perl Test Suite
-----------------------------------------------------------------------

The test driver for nt is the file testnt.cmd. It is a modified
version of the file TEST in the unix distribution. The actual test
scripts have been renamed from *.t to *.nt so that nt specific
modifications would not conflict with unix tests. What follows is a
list of the test scripts and the modifications made for NT:

base/cond.nt        unchanged
base/if.nt          unchanged
base/lex.nt         unchanged
base/pat.nt         unchanged
base/term.nt        changed /dev/null reference to nul:
cmd/elsif.nt        unchanged
cmd/for.nt          unchanged
cmd/mod.nt          unchanged
cmd/subval.nt       unchanged
cmd/switch.nt       unchanged
cmd/while.nt        unchanged
comp/cmdopt.nt      unchanged
comp/decl.nt        unchanged
comp/multiline.nt   changed reference of cat to type, changed /bin/rm
                    to del/f/q.
                    added close of filehandle 'try' so that file could
                    be deleted.
comp/package.nt     unchanged
comp/script.nt      changed ./perl to .\\perl; changed /bin/rm to
                    del/f/q.
comp/term.nt        unchanged
io/argv.nt          changed ./perl to .\\perl; changed /dev/null to
                    nul:; changed /bin/rm to del/f/q
io/dup.nt           changed 'cat' to 'type'.
io/fs.nt            changed 'pwd' to 'cd'; changed stat tests that
                    used inode or link fields.
                    deleted 'umask' tests; deleted 'link' tests;
                    deleted 'ls -l'
                    added code to delete temporary files and re-create
                    tmp directory.
io/inplace.nt       changed code createing scratch files to not use
                    'tee' and to not use leading dot in filenames;
                    changed 'cat' to 'type'; changed all references to
                    scratch files to use new names.
io/print.nt         unchanged
io/tell.nt          unchanged
lib/big.nt          unchanged
op/append.nt        unchanged
op/array.nt         unchanged
op/auto.nt          unchanged
op/chop.nt          unchanged
op/cond.nt          unchanged
op/dbm.nt           unchanged
op/delete.nt        unchanged
op/do.nt            unchanged
op/each.nt          unchanged
op/eval.nt          unchanged
op/exec.nt          changed /bin/sh to cmd.exe; changed exit code test
                    to reflect cmd.exe exit code vs. /bin/sh code.
                    deleted tests dependent on /bin/sh specific
                    behavior; 
op/exp.nt           unchanged
op/flip.nt          unchanged
op/fork.nt          not implemented
op/glob.nt          changed generation of $otherway to use readdir
                    instead of 'echo op/*'.
op/goto.nt          changed ./perl to .\\perl.
op/groups.nt        unchanged
op/index.nt         unchanged
op/int.nt           unchanged
op/join.nt          unchanged
op/list.nt          unchanged
op/local.nt         unchanged
op/magic.nt         changed 'echo $foo' to 'echo %foo%'.
                    deleted signaling code.
op/mkdir.nt         changed 'rm -rf' to 'del/f/q'.
op/oct.nt           unchanged
op/ord.nt           unchanged
op/pack.nt          unchanged
op/pat.nt           unchanged
op/push.nt          unchanged
op/range.nt         unchanged
op/read.nt          changed filename from "op/read.t" to "op/read.nt".
op/readdir.nt       changed wildcard pattern from "*.t" to "*.nt"
op/regexp.nt        unchanged
op/repeat.nt        unchanged
op/s.nt             unchanged
op/sleep.nt         unchanged
op/sort.nt          unchanged
op/split.nt         changed ./perl to .\\perl
op/sprintf.nt       unchanged
op/stat.nt          not implemented
op/study.nt         unchanged
op/substr.nt        unchanged
op/time.nt          deleted test using 'times'.
op/undef.nt         unchanged
op/unshift.nt       unchanged
op/vec.nt           unchanged
op/write.nt         changed 'cat' to 'type'.


-----------------------------------------------------------------------
Perl Library Routines
-----------------------------------------------------------------------

abbrev.pl           Tested
assert.pl           Tested
bigfloat.pl         Untested
bigint.pl           Tested
bigrat.pl           Tested
cacheout.pl         Untested
chat2.pl            Untested
complete.pl         NYI         Requires raw input (stty)
ctime.pl            Tested
dumpvar.pl          Tested
except.pl           Untested
fastcwd.pl          NYI         Uses inodes
find.nt             Tested
findde.pl           NYI
flush.pl            Untested
getcwd.pl           NYI         Requires lstat
getopt.pl           Tested
getopts.pl          Tested
impenv.pl           Untested
look.pl             Untested
ngetopt.pl          Untested
open2.nt            Tested
perldb.pl           Tested
pwd.pl              Untested
registry.pl         Tested
shwords.pl          Untested
stat.pl             Tested
syslog.pl           NYI         Requires sockets
termcap.pl          N/A         Requires ioctl, termcap, unix serial ports
timelocal.pl        Untested
validate.pl         Untested


-----------------------------------------------------------------------
Perl Example Routines
-----------------------------------------------------------------------

ADB                 N/A         Requires 'adb'
changes             N/A         Requires 'find'
down                N/A         Requires 'find'
dus                 N/A         Requires 'ls'
findcp              N/A         Requires 'find' and 'tar'
findtar             N/A         Requires 'find' and 'tar'
g/gcp               NYI         Requires 'rcp'
g/ged               N/A         Requires 'rsh'
g/gsh               N/A         Requires 'rsh'
muck                NYI         Requires 'cpp'
myrup               N/A         Requires 'ruptime'
nih                 N/A         Requires '#!' shell support
relink              N/A         Requires symlinks
rename              Untested
rmfrom              Untested
scan                N/A         Requires unix
shmkill             N/A         Requires SYSV ipc
sysvipc             N/A         Requires SYSV ipc
travesty            N/A         Requires Unix mail
van                 NYI
who                 N/A         Requires unix


-----------------------------------------------------------------------
NT Constants
-----------------------------------------------------------------------

$LoginName 			Tested		
		login name of current user

$NodeName 			Tested
		network name of local machine

$HKEY_CLASSES_ROOT	Tested
		Pre-defined handle for Registry access.

$HKEY_CURRENT_USER	Tested
		Pre-defined handle for Registry access.

$HKEY_LOCAL_MACHINE	Tested
		Pre-defined handle for Registry access.

$HKEY_USERS			Tested
		Pre-defined handle for Registry access.

$KEY_ALL_ACCESS		Tested
		Security Access Mask constant

$KEY_CREATE_SUB_KEY	Tested
		Security Access Mask constant

$KEY_ENUMERATE_SUB_KEYS		Tested
		Security Access Mask constant

$KEY_EXECUTE		Tested
		Security Access Mask constant

$KEY_NOTIFY			Tested
		Security Access Mask constant

$KEY_QUERY_VALUE	Tested
		Security Access Mask constant

$KEY_READ			Tested
		Security Access Mask constant

$KEY_SET_VALUE		Tested
		Security Access Mask constant

$KEY_WRITE			Tested
		Security Access Mask constant

$REG_BINARY 		Tested		Binary data
 		Registry data type 

$REG_DWORD 			Tested		32 bit value
 		Registry data type 

$REG_DWORD_LITTLE_ENDIAN	Tested	32 bit value little endian byte order
 		Registry data type 

$REG_DWORD_BIG_ENDIAN	Tested	32 bit value in big endian (network) byte order
 		Registry data type 

$REG_EXPAND_SZ 		Tested		Null terminated string with environment variables
 		Registry data type 

$REG_LINK 			Tested		Symbolic link within registry
 		Registry data type 

$REG_MULTI_SZ 		Tested		Multiple null terminated strings
 		Registry data type 

$REG_NONE 			Tested		No type associated with this value
 		Registry data type 

$REG_RESOURCE_LIST 	Tested		Device resource list
 		Registry data type 

$REG_SZ 			Tested		Null terminated string
 		Registry data type 


-----------------------------------------------------------------------
NT Registry Access
-----------------------------------------------------------------------
&RegCloseKey		Tested
		Closes a previously opened registry key.

&RegConnectRegistry	Untested
		Connect to a remote system's registry.

&RegCreateKey		Tested
		Create or open a registry key.

&RegCreateKeyEx		Tested
		Create or open a registry key.

&RegDeleteKey		Tested
		Delete a subkey from an open key.

&RegDeleteValue		Tested
		Delete a value from an open key.

&RegEnumKey			Tested
		Enumerate subkeys of an open key.

&RegEnumKeyEx		Tested
		Enumerate subkeys of an open key.

&RegEnumValue		Tested
		Enumerate values of an open key.

&RegFlushKey		Tested
		Causes buffered writes to registry to be written.

&RegGeyKeySecurity	Untested	
		Return security information about an open key.

&RegLoadKey			Untested	
		Writes information from file to an open key.

&RegOpenKey			Tested
		Open a subkey of an open key.

&RegOpenKeyEx		Tested
		Open a subkey of an open key.

&RegQueryInfoKey	Untested
		Return information on an open key.

&RegQueryValue		Tested
		Get value associated with value name and open key.

&RegQueryValueEx	Tested
		Get value and type associated with value name and open key.

&RegReplaceKey		Untested
		Replace a key and all subkeys and values with information from file.

&RegRestoreKey		Untested
		Replace registry information for key with information from file.

&RegSaveKey			Untested
		Save key and all subkeys and values to a file.

&RegSetKeySecurity	Untested
		Set security of an open registry key.

&RegSetValue		Tested
		Associate a value with an open key.

&RegSetValueEx		Tested
		Associate a named value with an open key.

&RegUnLoadKey		Untested
		Remove a key and all subkeys from registry.
