in reply to $ENV {'FOO'} $foo

On most systems there will be a signifigant performance overhead from using %ENV rather then a "normal" variable. %ENV access a system dependent table, which is typically not designed for efficient access. (On UNIX, for example, the environment table is (usually, at least) stored as an unordered, C-style, null-terminated array of strings in the format "KEY=VALUE". Searching through this to find an element is not very efficient, obviously.) Unless you need to interface with C code that uses environment variables or want to pass things to your child processes or recieve things from parent processes, you probably shouldn't use %ENV.