Sub::Alias - 替函式取別名
作者:gugod 發佈於: ,更新於: #perl最近在寫的 Sub::Alias 模組能夠很便利地替函式取別名:
use Sub::Alias;
sub name { "..." }
alias get_name => 'name';
比較熟習 Perl 的人大概可以看出來其實這就是:
*get_name = \&name;
但是好懂多了。
剛剛釋出了 0.03 版,增加了對 runtime 的支援:
sub alias_another_sub {
my $new_name = shift;
alias $new_name => 'another_sub';
}
alias_another_sub_to( "hey" );
如果用 Perl 原本的做法,這相當於:
no strict;
*{"$new_name"} = \&another;_sub;
是的,在執行時期操弄 symbol table,就必需要關掉 strict
才行。
這個模組只算是個小幫手,不過實做它卻出乎意料地有點難度,需要使用 Devel::BeginLift
與 Devel::Declare
兩個模組,在編輯時期操弄 symbol table,甚至是注入新的原始碼。