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 );
}
####
while (<>) {
my( $word1, @record ) = split /\|/;
####
( $fh{$word1} ||= IO::File->new("> $word1")
or die "Error opening $word1 for writing: $!\n"
)->print( @record );