In terms of pseudo-code, your task sounds sort of like this:
declare a "master" array that will hold a set of arrays
declare a max_array_size variable, initially set to zero
for each input file {
read its lines into a new array
if the size of this array (# of lines in file) > max_array_size {
update max_array_size to this new value (size of current array)
}
push a reference to this array onto the "master" array.
}
for each index ( 0 .. max_array_size -1 ) {
join the values at master[0..$#master][index] into a comma-delimite
+d string
# note that some of the values in that set may be undef
print the resulting string
}
HTH.