沒有什麼神奇怎麼回事,只是混淆。我們來看一個高層次的觀點。首先要注意的事情是,後來,在字符串中的每個字符作爲好像它是一個字符解釋:前人物的
[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