in reply to Re: Using grep in a scalar context
in thread Using grep in a scalar context

I'm counting total occurrences of a pattern in the dataset. Input in array format is M H D L N with each element being one letter. Output should count how many times MH, HD, DL, etc. appear. The input is MUCH longer (it's a amino acid sequence). And yes, overlaps are considered. AAA has 2 matches.

Replies are listed 'Best First'.
Re^3: Using grep in a scalar context
by choroba (Cardinal) on Feb 06, 2013 at 13:47 UTC
    I am still not sure what your input is, but I hope you might find one of the following two solutions helpful:
    use Data::Dumper; my $string = 'MHDLKNDHASDRWT'; my %count_string; $count_string{$_}++ for $string =~ /(?=(..))/g; # Uses look-ahead to o +nly progress by one character. my @array = split //, $string; my %count_array; $count_array{ join q(), @array[$_, $_ + 1] }++ for 0 .. $#array - 1; print Dumper \%count_string, \%count_array;
    Note: /AA/ matches the capital letter A followed by the capital letter A. It does not stand for "anything" in regular expressions.

    Updated: Added the hashes.

    لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ