#!/usr/bin/perl -w use strict; my $curr_chrom = ""; while () { my ($chrom) = split; # $chrom is the first column # parens on the left side are needed # for list context if ($chrom ne $curr_chrom) { $curr_chrom = $chrom; open (OUT, '>', "$curr_chrom.out") or die "unable to write $curr_chrom.out $!\n"; } print OUT; } close OUT; __DATA__ chr1 100 159 0 chr1 200 260 0 chr1 500 750 0 chr3 450 700 0 chr4 100 300 0 chr7 350 600 0 chr9 100 125 0 chr11 679 687 0 chr22 100 200 0 chr22 300 400 0 #### while () { chomp; @key_split = split("\n"); $Chr{"$key_split[0]"} = $key_split[0]; } ## better written as: ## while () { my ($chrom) = split; $Chr{$chrom}=1; }