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->[0], $ref->[1], $ref->[2], $ref->[3]) ;
or slightly easier
$sth->execute( @$ref );
Try those.
--Stevie-O
$"=$,,$_=q>|\p4<6 8p<M/_|<('=>
.q>.<4-KI<l|2$<6%s!<qn#F<>;$,
.=pack'N*',"@{[unpack'C*',$_]
}"for split/</;$_=$,,y[A-Z a-z]
{}cd;print lc