use strict; use warnings; if (@ARGV != 2) { die "Usage:\n perl $*0 sequence_file count_file\n"; } my ($sequence_file, $count_file) = @ARGV; open my $SEQ, '<', $sequence_file or die "Cannot open $sequence_file for input\n"; my $sequence = <$SEQ>; close $SEQ; my $total_pairs; my %pair_counts; for my $i (0..length($sequence)-2) { my $pair = substr $sequence, $i, 2; next if ($pair =~ /[^ABCDEFGHIJKLMNOPQRST]/); $pair_counts{$pair}++; $total_pairs++ } print "Processed $total_pairs pairs\n"; open my $COUNTS, '>', $count_file or die "Cannot open $count_file for output\n"; foreach my $pair (sort keys %pair_counts) { print {$COUNTS} $pair, ' ', $pair_counts{$pair}, "\n"; }