use strict ; use warnings ; my $PROCESSEDFILE = '' ; open PROCESSEDFILE, '>', \$PROCESSEDFILE ; while () { while (($_ !~ /"\s*$/) && !eof) { s/[\r\n]+$// ; $_ .= ' '. ; } ; print PROCESSEDFILE $_; } close PROCESSEDFILE ; open PROCESSEDFILE, '<', \$PROCESSEDFILE ; #use FileCache maxOpen => 50; # config: my $field = 0; my $sep = ","; my $end = '.END' ; $, = $sep; $\ = $/; my %file; my $fnum = 1; my $outDir = '/somewhere/' ; #$ARGV[1]; #unless (-d $outDir) { die "There is a no such directory." ; } #open PROCESSEDFILE, $ARGV[0] or die $!; while () { chomp; print "processing '$_'\n" ; my @c = split(/$sep/, $_); my( $key, $num ) = defined $c[$field] ? ( $c[$field], $fnum++ ) : ( '(column not present)', 0 ) ; unless ($file{$key}) { my $nameF = $c[$field]; $nameF =~ s/"//g; $file{$key}{num} = $num; $file{$key}{name} = $ARGV[1].$nameF.$end; if ($file{$key}{num} > 1) { print "opening $file{$key}{name}" ; # -f $file{$key}{name} # and die "Sorry, '$file{$key}{name}' exists; won't clobber."; ($file{$key}{fh} = 1) #cacheout $file{$key}{name} or die "Error opening '$file{$key}{name}' for write - $!"; } } print {$file{$key}{name}} @c; } __DATA__ "data", "data" ,"data", "data","data", "data" "data", "data" ,"data", "data with new line ", "and some more! ","data", "data" "data", "data" ,"data", "data","data", "data" "tada", "tada