open(IN1, '<', $input1) or die "Can't read source file $input1 : $!\n"; my $minlength = 1<<20; my %distrbtn; while() { next if />/; chomp; my $len = length(); $distrbtn{$len}++; $minlength = $len if ( $minlength > $len ); } close IN1; $minlength -= 3; open(IN2, '<', $input2) or die "Can't read source file $input2 : $!\n"; my $header; my @source; my %source_lengths; while() { chomp; if ( />/ ) { $header = $_; } elsif ( length() >= $minlength ) { push @source, $header; push @source, $_; push @{$source_lengths{length()}}, $#source; } } close IN2;