是否可以编写将散列返回给调用方的宏或块?
我试图模块化一些模板代码:
[%-
MACRO MakeSomeThing(something) BLOCK;
s = { a => 'a',
b => something,
c => 'c'
};
# RETURN s; # not allowed
# s; # just returns the hash ref string (HASH(0x32e42e4))
END;
newOb = MakeSomeThing('foo');
dumper.dump({'newOb' => newOb});
%]
有什么办法可以实现类似的模式?
最佳答案
当我遇到同样的问题时,我找不到办法。
解决方法是,您可以传入引用,并让宏修改引用的变量。这适用于数组和哈希。
定义示例:
[%
# usage: newOb={}; MakeSomeThing(newOb, something)
MACRO MakeSomeThing(rv, something) BLOCK;
rv.a = 'a';
rv.b = something;
rv.c = 'c';
END;
%]
使用示例:
[%
newOb = {};
MakeSomeThing(newOb, 'foo');
dumper.dump({'newOb' => newOb});
%]
关于perl - 模板工具包: how return a hash from a MACRO BLOCK,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54762573/