NAME
Perl6::Overview::Magic - Magical Variables
DESCRIPTION
Secondary Sigils (also known as "twigils"):
$+ # currently compiling scope (see S02)
$? # lexically-scoped (compile time, see S02)
$* # global (run time, see S02)
$= # file-scoped (see S02)
$^ # implicit block argument (see S06 placeholder variables)
$< # current $/ scope (see S02)
$. # public attribute (see S12 attributes)
$! # private attribute (see S12 attributes)
Named variables (see S02):
$/ # match object from last rule
$0 # first captured value from match: $/.[0]
@*ARGS # command-line arguments
&?BLOCK # current block (itself, see S06)
@?BLOCK # current blocks (themselves, see S06)
$?BLOCKLABEL # label of current block (see S06)
# XXX redundant with $?LABEL?
::?CLASS # current class (as package name)
$?CLASS # current class (as variable)
@?CLASS # current classes
%?CONFIG # configuration hash
$=DATA # data block handle (=begin DATA ... =end)
$*EGID # effective group id
%*ENV # system environment
$*ERR # standard error handle
$*EUID # effective user id
$*EXECUTABLE_NAME # executable name
$?FILE # current file
$?GRAMMAR # current grammar
@?GRAMMAR # current grammars
$*GID # group id
$*IN # standard input handle
$?LABEL # label of current block
@?LABEL # labels of current blocks
$?LINE # current line
$?MODULE # current module
@?MODULE # current modules
$?OS # operating system compiled for
$*OS # operating system running under
$?OSVER # operating system version compiled for
$*OSVER # operating system version running under
$*OUT # standard output handle
$?PACKAGE # current package (as object)
@?PACKAGE # current packages
$?PACKAGENAME # name of current package (see S10)
$?PERLVER # perl version compiled for
$*PERLVER # perl version running under
$*PROGRAM_NAME # name of the program being executed
$*PID # system process id
$?PUGS_VERSION # Pugs version (not canonical)
$*PUGS_HAS_HSPLUGINS # True if Pugs was compiled with support for hsplugins
# (not canonical)
::?ROLE # current role (as package name)
$?ROLE # current role (as variable)
@?ROLE # current roles
&?ROUTINE # current sub or method (itself, see S06)
@?ROUTINE # current subs or methods (themselves)
$*UID # system user id
There were threads on p6l about unifying all variables which concern the OS or the VM ($*UID, $*PROGRAM_NAME, etc.) into two variables, $?ENV (compile-time environment) and $*ENV (runtime environment). Larry did like the idea, but "ENV" is probably to overloaded to mean the hash of environment variables (which would be found under $*ENV.environment or some-such).