Can someone please explain to me the below code. This behavior has been like this for a while (tested on 5.8.5, 5.8.8, 5.10.1, 5.12.2) so there must be a reason behind it?
$ perl -M5.012 -E '$aa=2'
Global symbol "$aa" requires explicit package name at -e line 1.
$ perl -M5.012 -E '$a=2'
Thanks.
This is in the strict documentation:
Because of their special use by sort(), the variables $a and $b are exempted from this check.
Always check the docs. Most of the answers are in there :)
$a
(and also $b
, and many others) is a global variable. It's intended to be used in the sort
function, e.g. sort { $a <=> $b } @list
. perldoc perlvar
lists all of perl's built-in globals and their meaning.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With