in reply to list vs array context: odd error message...

Somebody smarter than me will answer in a moment (or has answered while I typed this), but I believe your problem is because the split is assigning to an array ref rather than a real array. More correct (but probably not MOST correct) would be:
/(\S+)\s?=?\s?\[(.+)\]$/ && do { @{$hash{$1}} = split /,/, $2; next; };
(Untested!)

Hot Pastrami