1

变量名可以从变量派生吗?

$hash01={instance => '01',street => 'blah'}

这可以调用定义:

mydefine { '01': hash => $mod::params::hash01 }

这能行吗?(我对 hash var concat 感兴趣)

$var='01'

mydefine { $var: hash => $mod::params::hash"$var" }
4

1 回答 1

3

我为此使用了 inline_template() 和 scope.lookupvar() :

$mod::params::hash01={instance => '01',street => 'blah'}
$var='01'
$hash_name="mod::params::hash$var"
$hash=inline_template("<%= scope.lookupvar(hash_name) %>")

然而 inline_template 总是返回字符串,所以它会返回字符串“streetblahinstance01”,因为你的函数需要一个散列,所以它不起作用。

另一种方法是通过使用哈希数组来避免该问题。请注意,数组索引从 0 开始。

$mod::param::hashes=[{instance=>'00',street=>'fooblah'},{instance=>'01',street=>'blah'}]
mydefine { $var : hash => $mod::param::hashes[1] }

https://blog.kumina.nl/tag/inline_template/

于 2012-05-07T11:46:32.493 回答