use strict; use feature qw(say); use autodie qw(:all); scalar ; my @header = split /\s*,\s*/, ; chomp $header[-1]; my @outputFHs; for (1..@header-1) { open $outputFHs[$_], ">", "file$_"; say {$outputFHs[$_]} "$header[$_]:"; } while () { chomp; next unless length; my @cols = split /\s*,\s*/; for my $colNo (1..@header-1) { say {$outputFHs[$colNo]} "$cols[0] : $cols[$colNo]"; } } __DATA__ 20150627 19:08:00 default, prim, second, copy_direct, forced_copy, always_allow, type_of_dump, full_memory, d100spupt, /dev/lg_du, /dev/sysdu, /var/adm, 1, 1, fault, disallow, doc10, 5, fault, 7, ad8, 9, wu, disallow, doc11, 5, fault, 5g7, 8, te, 10, disallow, doc12, 5, fault, 7, ca, 9hg, 10, disallow, doc13, 5, fault, 7, 8, 35hg, 10, disallow,