Недавно я обнаружил, что, как представляется, недокументированная переменная в Perl, %_
. Я точно не помню, как я наткнулся на него (это было на прошлой неделе), но у меня была опечатка в моем коде, где я использовал map
, а вместо $_->{key}
использовал $_{key}
. Когда я нашел ошибку, я был удивлен, что она не вызвала ошибку, и я подтвердил, что use strict
и use warnings
находятся на месте.
Итак, я сделал небольшой тест, и, конечно же, он работает без каких-либо предупреждений или ошибок:
$ perl
use strict;
use warnings;
print keys %_;
$
Итак, все, что я могу понять, это то, что %_
определяется где-то. Я не могу найти его в perlvar
, так что же сделка? Он не содержит содержимого в script выше.