use IO::File; use strict; $, = "|"; my %fh; # key=filename; val=filehandle while (<>) { my @record = split /\|/; my $word1 = shift @record; $fh{$word1} ||= IO::File->new("> $word1") or die "Error opening $word1 for writing: $!\n"; $fh{$word1}->print( @record ); }