#!/usr/bin/perl while ($line = <>){ my($first, $rest) = $line =~ m[(^.*?)\|(.*$)]; if ( open(OUTFILE, ">>$first") ) { print OUTFILE $rest; } else { die("cannot open $first"); } }