Your second line will only initialize the first variable $dow with "", all the other variables will be set to undef
The simplest code to make it work is to extend the list on the right hand side of line 4 so that it will always be enough to fill all variables even if split would return the empty list:
($dow,$mon,$day,$year,$num1,$num2,$num3,$dow2,$mon2,$day2,$year2)= ( s
+plit(/[,]/, $line),("") x 11 );
Note that 'x' is an operator that in this case produces a list of 11 empty strings. Naturally you could also use 0 instead of "".