我想有一个子例程作为一个哈希成员,它能够访问其他哈希成员。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