#!/usr/bin/perl use strict; use warnings; use 5.10.0; my $seq = 'deabcdefabcdefgAbcdeabcdefabcdefgAbcdeabcdefabcdefgAbcdeabcdefabcdefgAbcdeabcdefabcdefgAbcdeabcdefabcdefg'; my %val = do{my $cnt = 0; map {$_ => ++$cnt} split //, 'Aabcdefg'}; my $xor = 0; my $loop = 0; for (split //, $seq) { $loop++; $xor ^= $val{$_}; say $loop if !$xor; } #### 9 36 45 72 81 #### my %val = do{my $cnt = 0; map {$_ => 2**(++$cnt)} split //, 'Aabcdefg'};