我对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,
我会很高兴:
- 如果有人可以解释代码,特别是如果有人可以编写帮助代码,(通过额外的步骤)什么可以帮助我理解它是如何工作的 - 会发生什么。
- 解释一下,为什么解析后的代码不打印原始结果。
%{'_';}
解析后的代码中的 是什么意思?