First of all,
local doesn't do what you'd expect. Change the
local to
my and you'll be ok. See
local and
my for the details.
You're inadvertently just splitting the input line on a space and putting the elements in an array. What you need to do is split the value of $1 (which is the string matched by the (\w+) part when you find a line that matches. So that part could be rewritten as
if (/^-- NAME:\s(.+)/) {
@name = split(" ", $1);
}
if (/^-- TOYS:\s(.+)/) {
@toys = split(" ", $1);
}
I'm assuming that after "NAME" there can also be multiple names.
Arjen