#!/usr/bin/perl my @data; while () { chomp; push @data,[split /,/]; } for my $z ( 0 .. $#data ) { for my $v ( 0 .. $#{$data[$z]} ) { print "$data[$v][$z],"; } print "\n"; } __DATA__ Date,a,b,c,d,e,f Mon-1,11,12,13,14,15,16 Mon-2,21,22,23,24,25,26 Tue-1,31,,33,34,35,36 Tue-2,41,42,,44,45,46 Wed-1,51,52,53,54,55,56 Wed-2,61,62,63,64,65,66 #### May-1,May-2,May-3,May-.......,May-30 /dir/dir1/file1,3,34,,,,34,....... /dir/dir1/dir3,..... /dir/dir1/file2,.... /dir/dir1/file3,... /dir/dir1/dir2.... ..up to 1000-2000 rows..