in reply to Can't call method on undefined value

The call to the constructor (new) is failing and returning undef. You aren't checking for this failure (see the previous replies for the ...or die "..." idiom) so you end up with $som containing undef (which is the return value from your failed call to new) and hence the error when you try to call the method.

The 'weight_dim' error is the first thing to try. If it *is* necessary and not in the docs, the module author might appreciate an email to that effect.

Otherwise, try reading the module source to see why it might be returning undef, or stepping into it with the perl debugger.

And come back here if none of the above helps :-)