変数から変数名を派生させることはできますか?
$hash01={instance => '01',street => 'blah'}
これは定義を呼び出すために機能します:
mydefine { '01': hash => $mod::params::hash01 }
これは機能しますか?(ハッシュ変数の連結に興味があります)
$var='01'
mydefine { $var: hash => $mod::params::hash"$var" }
変数から変数名を派生させることはできますか?
$hash01={instance => '01',street => 'blah'}
これは定義を呼び出すために機能します:
mydefine { '01': hash => $mod::params::hash01 }
これは機能しますか?(ハッシュ変数の連結に興味があります)
$var='01'
mydefine { $var: hash => $mod::params::hash"$var" }
これには 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] }