For this particular case, you don't need a rep count because the whole thing is very well behaved.
print join(',', unpack("C/C* v*", $testinput)), "\n";
Is this strictly an educational exercise, or do you have more complex data structures to interrogate? If the data is chunked in a different way, Counting Repetitions
solves your trouble with parentheses, but this only works in the context where you get to pick how things are packed.
my $testinput = pack('C/a* a* a*',
(pack 'Cvs', 1, 3, -5),
(pack 'Cvs', 2, 4, -6)
print join(',', unpack("C/(Cvs)", $testinput)), "\n";
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.