in addition to what Zaxo replied:
$smbconf{$share} seems to expect a reference to
a hash, like your node's title states. you set it to a scalar,
i.e. "", which seems to mess up somewhere else later. i guess
it would work if you assign an empty hashref,
$smbconf{$share} = {} (or some hashref containing
default values?).