#!/usr/bin/perl -w
use strict;
my$f= $[;my
$ch=0;sub l{length}
sub r{join"", reverse split
("",$_[$[])}sub ss{substr($_[0]
,$_[1],$_[2])}sub be{$_=$_[0];p
(ss($_,$f,1));$f+=l()/2;$f%=l
();$f++if$ch%2;$ch++}my$q=r
("/ntfgpfdfal,thg?bngbj".
"naxfcixz");$_=$q; $q=~
tr/f[a-z]/ [l-za-k]
/;my@ever=1..&l
;my$mine=$q
;sub p{
@_;
}
be $mine for @ever
代碼重構
B::Deparse 模塊是一個很好的打印機,它可以揭開 Perl 代碼神秘的面紗,幫助你理解優化器為你的代碼做了那些轉換。換言之,它會重新生成Perl代碼,試著略去一些晦澀難懂的部分,把代碼用一致的格式寫出來。
使用 B::Deparse 模塊的一種方法:
代碼如下: perl -MO=Deparse heart_raw.pl > heart_deparse.pl
輸出如下代碼:
代碼如下:
BEGIN { $^W = 1; }
use strict 'refs';
my $f = $[;
my $ch = 0;
sub l {
length $_;
}
sub r {
join '', reverse(split(//, $_[0], 0));
}
sub ss {
substr $_[0], $_[1], $_[2];
}
sub be {
$_ = $_[0];
p(ss($_, $f, 1));
$f += l() / 2;
$f %= l();
++$f if $ch % 2;
$ch++;
}
my $q = r("/ntfgpfdfal,thg?bngbjnaxfcixz");
新聞熱點
疑難解答