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