#! perl -slw use strict; my %fhs; my $d = '|'; while(<>) { my ($first, $rest) = m[(^.*?)\Q${d}\E(.*$)]; my $fh = $fhs{$first} ||= do { IO::File->new('>>', $first) || die "Couldn't open $first:$!" }; $fh->print($rest); }