#! /opt/local/compbio/bin/perl5.8.0 -w $size = 5000; $overlap = 1; $overlap_size = 0.00*$size; $f = $ARGV[0]; local $/ = "\n>"; open(IN, "$f") || die "$f no\n"; while(){ s/>//g; $id = ''; $annt = ''; @ln = split /\n/; $defLine = shift @ln; $id = $1 if $defLine =~ /^(\S+)\s?/; $annt = $1 if $defLine =~ /^\S+\s+(.+)$/; $seq = join("",@ln); for(my $i=0; ($i*$size)<(length$seq); $i++){ $subSeq = substr($seq,$i*$size, $size); $subSeq =~ s/(\w{60)/\$1\n/g; chomp $subSeq; $start = $i*$size +1; $end = $start + (length$subSeq) - 1; print ">$id:[",$start,'-',$end,"] $annt\n$subSeq\n"; if($overlap == 1 && ($i*$size+$overlap_size) < (length$seq)){ $subSeq = substr($seq,$i*$size+$overlap_size, $size); $subSeq =~ s/(\w{60)/\$1\n/g; chomp $subSeq; $start = $i*$size +1+$overlap_size; $end = $start + (length$subSeq) - 1; print ">$id:[",$start,'-',$end,"] $annt\n$subSeq\n"; } } }