这个Perl一线工作如何实际工作?
所以,我碰巧注意到last.fm正在我的地区招聘,而且自从我知道几个人
who worked
there以后,我虽然申请了。
但是我以为我最好先看看current staff。 该页面上的每个人都有一个可爱的/聪明/笨拙的领带,像“生命不是一千倍,我们无法自拔”?其实这是很有趣的,直到我得到这个: perl -e'print+pack+q,c*,map$.+=$_,74,43,-2,1,-84,65,13,5,-12,-3,-82,44,21,18,-70,56,7,-77,72,-7,2,8,-6,-34' 我无法抗拒粘贴到我的终端(这是一个愚蠢的事情,也许),但它打印:
我以为比较容易弄清楚Perl一线工作原理。但是我无法真正理解这些文档,而且我不知道Perl,所以我甚至不知道我在阅读相关的文档。 所以我尝试修改数字,这让我无处不在。所以我决定这是非常有趣的,值得一提的。 所以,“怎么工作”有点模糊,我的问题主要是, 那些数字是什么?为什么有负数和正数,负面或积极性是否重要? 运算符组合= $ _做什么? 什么是包q,c *,在做什么? 解决方法
这是
“Just another Perl hacker”的一个变体,一个Perl模因。当JAPH走了,这个比较温驯。
你需要做的第一件事就是弄清楚如何解析perl程序。它在函数调用中缺少括号,并以有趣的方式使用和引用类操作符。原来的程序是这样的: print+pack+q,-34
如果我们添加圆括号,请使用块语法进行映射,并添加一些空格,我们得到: print(+pack(+q,map{$.+=$_} (74,-34))) 下一个棘手的是q这里是q quote-like operator.它更常用单引号写: print(+pack(+'c*',-34))) 记住,一元加号是一个无操作(除了强制标量上下文),所以现在应该看起来更加熟悉。这是调用 print(join("",map {chr($.+=$_)} (74,…,-34)))
@list_accumulator = (); for $n in (74,-34) { $. += $n; push @list_accumulator,chr($.) } print(join("",@list_accumulator)) $。变量包含运行总数的数字。选择这些数字,以便运行总计是作者希望打印的字符的ASCII码:74 = J,74 43 = 117 = u,74 43-2 = 115 = s等。它们为负数或正数关于每个字符是否在ASCII之前或之后的ASCII顺序。 为了您的下一个任务,请解释此JAPH(EyesDrop生成)。 ''=~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@(@@+@)' ^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').',"})') 不要在生产代码中使用任何这些。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |