although I'm not sure why
Array assignments are greedy, just as other people have said. How is Perl to know that in:
my (@date, @F_SCORE, ...) = (@$date_ref, @$F_SCORE_ref, ...);
... @date should only slurp up the elements from the flattening of @$date_ref into a list? By the time the assignment occurs, Perl has forgotten how many elements $date_ref contained.
By the way, as I wrote before, there's no obvious and particular need to perform this copying operation. It's probably just busy work. If you're having trouble figuring out how to work with references in place, ask away and we'll help you figure out how to avoid it.