Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了奇怪的perl代码 – 寻找解释大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道一点点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,

我会很高兴

>如果有人可以解释代码,特别是如果有人可以编写一个帮助代码,(附加步骤)什么帮助我了解它是如何工作的 – 会发生什么.
>解释为什么deparsed代码不打印原​​始的结果.

什么意思是代码中的%{‘_’}?

解决方法

代码操作符实际执行的代码可能实际上是类似的 @H_29_6@my $code = "do { $repl_expr }";

所以当替换表达式为_} – > {_时,执行以下操作:

do { _}->{_ }

_简单地返回字符串_(因为Strict是关闭的),所以这是一样的

do { "_" }->{_}

这是一样的

"_"->{_}

你在那里有一个哈希元素解引用,其中引用是一个符号引用(即一个字符串而不是一个实际引用).通常严格禁止,这里是一个象征性参的例子:

%h1 = ( id => 123 );
%h2 = ( id => 456 );
print "h$_"->{iD},"\n"
   for 1..2;

这样的意思

"_"->{_}    # Run-time symbol lookup

是相同的

$_{_}       # Compile-time symbol lookup

一个类似的技巧经常用于单排.

perl -nle'$c += $_; END { print $c }'

可以缩短

perl -nle'$c += $_; }{ print $c'

因为在使用-n时实际执行的代码是从相当于的东西获得的

@H_29_6@my $code = "LINE: while (<>) { $program }";
%{'_';}

是一种非常奇怪的写法

%{'_'}

这是一个哈希取消引用.再次,这里的参是一个象征性的参.相当于

%_

在标量上下文中,哈希电流返回一个值,该值报告有关该哈希内部的一些信息(如果为空则返回假值).有一个建议改变它返回键的数量.

大佬总结

以上是大佬教程为你收集整理的奇怪的perl代码 – 寻找解释全部内容,希望文章能够帮你解决奇怪的perl代码 – 寻找解释所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。