Я знаю немного perl, но недостаточно глубоко понимаю следующее.
Чтение perldelta 5.18 я нашел следующий фрагмент кода, который уже отключен в 5.18. Не считая этого, все еще хотите понять, как это работает.
Вот код и в комментариях то, что я понимаю
%_=(_,"Just another "); #initialize the %_ hash with key=>value _ => 'Just another'
$_="Perl hacker,\n"; #assign to the $_ variable with "Perl..."
s//_}->{_/e; # darkness. the /e - evauates the expression, but...
print
он печатает:
Just another Perl hacker,
Я попробовал perl -MO=Deparse
и получил следующий
(%_) = ('_', 'Just another '); #initializing the %_ hash
$_ = "Perl hacker,\n"; # as above
s//%{'_';}/e; # substitute to the beginning of the $_ - WHAT?
print $_; # print the result
japh syntax OK
Что странно (по крайней мере для меня) - запуск кода "deparsed" не дает исходный результат и печатает:
1/8Perl hacker,
Я был бы очень доволен:
- если кто-то может объяснить код, особенно если кто-то может написать вспомогательный код (с дополнительными шагами), что поможет мне понять, как оно работает - что происходит.
- объясните, почему депарафинированный код не печатает исходный результат.
Что означает %{'_';}
в отпарном коде?