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