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-delimited string # note that some of the values in that set may be undef print the resulting string }