#!/usr/bin/perl -w use IO::File; use strict; my( %files, $ele1, $ele2, $ele3, $id, $fh ); while( <> ) { ($ele1, $ele2, $ele3, $id ) = split; $files{$id} = $fh = $files{$id} || openup( $id ); print $fh $id, ":\t", $ele1, "\t", $ele2, "\t", $ele3, "\n"; } sub openup { my( $filename ) = shift; my $fh = IO::File->new( $filename, "w" ) || die "unable to open $filename ($!)\n"; return $fh; }