没有什么神奇怎么回事,只是混淆。我们来看一个高层次的观点。首先要注意的事情是,后来,在字符串中的每个字符作为好像它是一个字符解释:前人物的
[1] map{chr(ord()-1)} ...
因此,像“6qD”的字符串会导致“5rC”( 6','q'和'D')。感兴趣的主要点是一个字符串的起点附近的数组:
[2] ">>>E!)",">>>E)",">>>E",">>>",">>",">",""
此定义的“面具”,我们将取代以后,这个字符串的序列:
[3] "9$_*\x{0e}"
他们会插入$_
点。字符串\x{0e}
代表一个十六进制控制字符;请注意,\x{0d}
,就在它之前的字符是回车符。这就是当我们做[1]时会被代入[3]。
在组装[3]字符串之前,我们在[2]中的每个元素前面添加一个等于i的!
。每个连续的元素比之前的元素多获得一个!
。请注意,其值在!
之前的字符是空格
。
脚本遍历每个组装的数组元素的,现在看起来更像这样的其余部分:
[4] "!!!!!9>>>E!)\x{0e}", ---> " 8===D ("
"!!!!!!9>>>E)\x{0e}", ---> " 8===D("
"!!!!!!!9>>>E\x{0e}", ---> " 8===D"
"!!!!!!!!9>>>\x{0e}", ---> " 8==="
"!!!!!!!!!9>>\x{0e}", ---> " 8=="
"!!!!!!!!!!9>\x{0e}", ---> " 8="
"!!!!!!!!!!!9\x{0e}", ---> " 8"
然后reverse
操作会将在反向相同的元件,创建一个循环。
在这一点上,你应该能够看到产生动画的模式emerge。现在只需要移动动画中的每一步,然后再返回,这由脚本的其余部分完成。每步的时间延迟由选择语句决定:
[5] select undef, undef, undef, 0.25
它告诉我们在每次迭代之间等待250毫秒。如果你想看到它加速或减速,你可以改变它。
什么问题,除了在极端丑陋? – anthares
可执行的线条噪音:-D – Krab
神奇的Perl精灵使这一切发生。 – Ether