%ENV

%ENV The hash %ENV contains your current environment. Setting a value in ENV changes the environment for any child processes you subsequently fork() off. As of v5.18.0, both keys and values stored in %ENV are stringified. my $foo = 1; $ENV{'bar'} = \$foo; if( ref $ENV{'bar'} ) { say "Pre 5.18.0 Behaviour"; } else { say "Post 5.18.0 Behaviour"; } Previously, only child processes received stringified values: my $foo = 1; $ENV{'bar'} = \$foo; # Always printed 'non ref' system($^X, '-e',

%-

%- Similar to %+ , this variable allows access to the named capture groups in the last successful match in the currently active dynamic scope. To each capture group name found in the regular expression, it associates a reference to an array containing the list of values captured by all buffers with that name (should there be several of them), in the order where they appear. Here's an example: if ('1234' =~ /(?<A>1)(?<B>2)(?<A>3)(?<B>4)/) { foreach my $bufname (sort

%+

%+ Similar to @+ , the %+ hash allows access to the named capture buffers, should they exist, in the last successful match in the currently active dynamic scope. For example, $+{foo} is equivalent to $1 after the following match: 'foo' =~ /(?<foo>foo)/; The keys of the %+ hash list only the names of buffers that have captured (and that are thus associated to defined values). The underlying behaviour of %+ is provided by the Tie::Hash::NamedCapture module. Note: %- and %+ are tied views

%!

%! Each element of %! has a true value only if $! is set to that value. For example, $!{ENOENT} is true if and only if the current value of $! is ENOENT ; that is, if the most recent error was "No such file or directory" (or its moral equivalent: not all operating systems give that exact error, and certainly not all languages). To check if a particular key is meaningful on your system, use exists $!{the_key} ; for a list of legal keys, use keys %! . See Errno for more information, and also see

$~

$~ The name of the current report format for the currently selected output channel. The default format name is the same as the filehandle name. For example, the default format name for the STDOUT filehandle is just STDOUT . Mnemonic: brother to $^ .

$|

$| If set to nonzero, forces a flush right away and after every write or print on the currently selected output channel. Default is 0 (regardless of whether the channel is really buffered by the system or not; $| tells you only whether you've asked Perl explicitly to flush after each write). STDOUT will typically be line buffered if output is to the terminal and block buffered otherwise. Setting this variable is useful primarily when you are outputting to a pipe or socket, such as when you are

${^WIN32_SLOPPY_STAT}

${^WIN32_SLOPPY_STAT} If this variable is set to a true value, then stat() on Windows will not try to open the file. This means that the link count cannot be determined and file attributes may be out of date if additional hardlinks to the file exist. On the other hand, not opening the file is considerably faster, especially for files on network drives. This variable could be set in the sitecustomize.pl file to configure the local Perl installation to use "sloppy" stat() by default. See the doc

${^WARNING_BITS}

${^WARNING_BITS} The current set of warning checks enabled by the use warnings pragma. It has the same scoping as the $^H and %^H variables. The exact values are considered internal to the warnings pragma and may change between versions of Perl. This variable was added in Perl v5.6.0.

${^UTF8LOCALE}

${^UTF8LOCALE} This variable indicates whether a UTF-8 locale was detected by perl at startup. This information is used by perl when it's in adjust-utf8ness-to-locale mode (as when run with the -CL command-line switch); see perlrun for more info on this. This variable was added in Perl v5.8.8.

${^UTF8CACHE}

${^UTF8CACHE} This variable controls the state of the internal UTF-8 offset caching code. 1 for on (the default), 0 for off, -1 to debug the caching code by checking all its results against linear scans, and panicking on any discrepancy. This variable was added in Perl v5.8.9. It is subject to change or removal without notice, but is currently used to avoid recalculating the boundaries of multi-byte UTF-8-encoded characters.