in reply to unpack() into object fields

I think your slice method (@{$obj}{@fields} = unpack $layout, $_{rec}) is probably the most efficient. 'Cleaner' is in the eye of the beholder, personally I think that syntax is the cleanest as well.