#!/usr/bin/perl use warnings; use strict; my %windowSeqCount = (); my $sequenceRef = loadSequence("input.fasta"); #writing to a new file open (UNIQUEKMERS,">",output.fasta') or die $!; my $windowSize = 23; my $stepSize = 1; for( my $windowStart = 0 ; $windowStart <= ( length($$sequenceRef) - $windowSize ); $windowStart += $stepSize ) { my $windowSeq = substr ( $$sequenceRef, $windowStart, $windowSize); $windowSeqCount{$windowSeq}++ if $windowSeq =~ /GG$/; } for (keys %windowSeqCount){ print UNIQUEKMERS $_, "\t", $windowSeqCount{$_}, "\n"; } sub loadSequence { my ($sequenceFile) = @_; my $sequence = ""; unless ( open( FASTA, "<", $sequenceFile ) ) { die $!; } while (){ my $line = $_; chomp ($line); if ($line !~ /^>/ ) { $sequence .= $line; } } return \$sequence; }