use warnings; use strict; my $flips = 'TTHHHHTHHHHHHTHT'; my $flops = substr $flips, 1; my ($maxT, $maxH, $side) = (0, 0, substr $flops, 0, 1); my $toggles = ($flips ^ $flops); $toggles =~ tr/\0\x1c/01/; my @runs = $toggles =~ /(0*1)/g; for my $run (@runs) { $maxT = length $run if $side eq 'T' && length $run > $maxT; $maxH = length $run if $side eq 'H' && length $run > $maxH; $side = $side eq 'T' ? 'H' : 'T'; } print "Longest heads run is $maxH\n"; print "Longest tails run is $maxT\n"; #### Longest heads run is 6 Longest tails run is 2