变量名是否可以从变量派生?
$hash01={instance => '01',street => 'blah'}
这适用于调用define:
mydefine { '01': hash => $mod::params::hash01 }
这可以吗? (我对hash var concat感兴趣)
$var='01'
mydefine { $var: hash => $mod::params::hash"$var" }
答案 0 :(得分: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] }