我想有一個子例程作爲一個哈希成員,它能夠訪問其他哈希成員。Perl,使用哈希「閉包」
例如
sub setup {
%a = (
txt => "hello world",
print_hello => sub {
print ${txt};
})
return %a
}
my %obj = setup();
$obj{print_hello};
理想的情況是輸出 「Hello World」 的
編輯
對不起,我沒有指定一個要求
我應該能夠做到
$obj{txt} = "goodbye";
,然後$ OBJ {print_hello}應該輸出goodbye
不會預先聲明$ h,並且將hashref分配給它更簡單?像我的$ h; $ h = {msg =>'hello',express_yourself => sub {print $ h - > {msg},「\ n」}}; – MkV 2010-06-15 14:15:22
是的,這非常像Class :: Closure,它需要的是一個AUTOLOAD,它檢查$ self {$ AUTOLOAD}是一個子引用並將其添加到包符號表(假定setup()是構造函數一類)。 – MkV 2010-06-15 14:16:49
提及對象+1。這絕對是一個對象的工作。 – fengshaun 2010-06-15 23:13:49