Perl English -
use English; names for ugly punctuation variables

Provide aliases for the built-in variables whose names no one seems to like to read. Full description

$ARG
$_
Used by foreach, grep, map, print, unlink and various unary functions including ord, int.
pattern matching m//, s///, and tr/// when no =~ is used
Matching
$PREMATCH
$`
string preceeding last match
$MATCH
$&
string matched
$POSTMATCH
$'
string following last match
$LAST_PAREN_MATCH $+
last bracket matched/
$n = 1 or 2 …
text last matched
$LAST_SUBMATCH_RESULT $^N    
$LAST_MATCH_START $-{ARRAY} $LAST_MATCH_END $+{ARRAY}
Input            Output
$NR
$INPUT_LINE_NUMBER
$.
$OUTPUT_AUTOFLUSH =1;
$| =1;
$RS
$INPUT_RECORD_SEPARATOR =
$/
defaultes to \n
$ORS
$OUTPUT_RECORD_SEPARATOR = "\n";
$\

avoids needing to add \n to prints
BUT printf still needs it!
 $OFS
$OUTPUT_FIELD_SEPARATOR
$,
 
Interpolation "constants"
$LIST_SEPARATOR
$"
$SUBSEP
$SUBSCRIPT_SEPARATOR
$;
Formats
$FORMAT_PAGE_NUMBER
$%
$FORMAT_LINES_PER_PAGE
$=
$FORMAT_NAME
$~
$FORMAT_TOP_NAME
$^
$FORMAT_LINES_LEFT
$-
  
$FORMAT_LINE_BREAK_CHARACTERS
$:
$FORMAT_FORMFEED
$^L
Error status
$CHILD_ERROR
$?
   
$ERRNO
%OS_ERROR
%ERRNO
%!
use Errno;
errorno.h
if ($!{ENOENT}) { $OS_ERROR $!
 if (open(FH, $filename)) {
                        # Here $! is NOT meaningful.
        ...                    } 
        else {
                # ONLY here is $! meaningful.
                    ...
                 

$EXTENDED_OS_ERROR
$^E
$EVAL_ERROR
$@
   
Process info.
$PID
$PROCESS_ID
$$
$PROGRAM_NAME
$0
$UID
$REAL_USER_ID
$<
$EUID
$EFFECTIVE_USER_ID
$>
$GID
$REAL_GROUP_ID
$(
$EGID
$EFFECTIVE_GROUP_ID
$)
Internals.
$ACCUMULATOR
$^A
$LAST_REGEXP_CODE_RESULT
$^R
$EXCEPTIONS_BEING_CAUGHT
$^S
   
$COMPILING
$^C
$DEBUGGING
$^D
$INPLACE_EDIT
$^I
value of -i switch $BASETIME
$^T
when program began running (seconds since the epoch )
$WARNING
$^W
   
$EXECUTABLE_NAME
$^X
$PERL_VERSION
$^V
$PERLDB
$^P
   
$OSNAME
$^O
$SYSTEM_FD_MAX
$^F (usually 2)

Deprecated.
The ground of all being.
@ARG @_ are deprecated (5.005 makes @_ lexical)
$ARRAY_BASE $[
$OFMT $#
$MULTILINE_MATCHING $
$OLD_PERL_VERSION $]

Variables with side-effects which get triggered just by accessing them (like $0 == ProgramName) will still be affected.

See perlvar for a complete list of these.

This module can provoke sizeable inefficiencies for regular expressions, due to unfortunate implementation details. If performance matters in your application and you don't need $PREMATCH, $MATCH, or $POSTMATCH, try doing