use warnings; use strict; my $file = shift; open my $IN, '<', $file or die "Cannot open '$file' $!"; while ( <$IN> ) { my ( $field ) = /^([^,]+)/ or die "Error: field not found.\n"; open my $OUT, '>>', $field or die "Cannot open '$field' $!"; print $OUT $_; } close $IN;