Yes, this is the expected behavior due to the interaction of two factors:
- You used the
Env module, which aliases $ENV{PATH} to $PATH .
Note that $ENV{PATH} always available in Perl. use Env just adds aliases to the contents of %ENV , no need to do %ENV :
$ perl -E 'say $ENV{LANG}' en_US.UTF-8
${PATH} is nothing more than a more verbose way of saying $PATH . The ${...} construct (and its cousins, @{...} and %{...} ) are most often used to interpolate inside double-quoted strings to make Perl recognize all contents {...} as a name a variable, not a shorter name followed by literal text, but the syntax can also be used in other contexts.
A simple demonstration of this:
$ perl -E '$foo = "bar"; say ${foo}' bar
source share