Shame on me not reading the OP properly!!
my $number = Variant(VT_I4, 1);;
my $prices = Variant(VT_R4 | VT_ARRAY, [1,10], 1); # Index 0 .. 9
my $others = Variant(VT_R4 | VT_ARRAY, [1,5], 1); # Index 0 .. 4
my $returnValue = $object->GetData($number,$prices,$others);
If this does not work I would try to "OR" the by_reference constant for the array statements like
Variant(VT_R4 | VT_ARRAY | VT_BYREF, [1,5], 1);
I have no possibility to test this myself, so please regard this as the shot in the dark it is. But since you don't seem to have reached a working solution, I offer you this straw....