First: Actually, you ARE returning an array. Lists are only transient things that exist in expressions. If you can take a reference to it, it's an array.
With that out of the way: That's not how you access array elements, and I think that'll give you a warning about single-element array slicing.
There are two ways you can do your array:
$sth->execute( $ref->, $ref->, $ref->, $ref->) ;
or slightly easier
$sth->execute( @$ref );
}"for split/</;$_=$,,y[A-Z a-z]