#! perl use strict; use warnings; while () { if (/^([0-9a-fA-F]{2})\1/) { print "Found 4 repeating characters: $1$1\n"; } elsif (/^([0-9a-fA-F]{4})\1/) { print "Found 8 repeating characters: $1$1\n"; } elsif (/^([0-9a-fA-F]{8})\1/) { print "Found 16 repeating characters: $1$1\n"; } else { print "Found 0 repeating characters\n"; } } __DATA__ 1234FBABCBED062405E56F853AAE238C4428FBABCBED0624 0A0AFBABCBED062405E56F853AAE238C4428FBABCBED0624 0A1B0A1BCBED062405E56F853AAE238C4428FBABCBED0624 0A1B2C3D0A1B2C3DCBED062405E56F853AAE238C4428FBAB 01230A0AFBABCBED062405E56F853AAE238C4428FBABCBED #### 13:12 >perl 914_SoPW.pl Found 0 repeating characters Found 4 repeating characters: 0A0A Found 8 repeating characters: 0A1B0A1B Found 16 repeating characters: 0A1B2C3D0A1B2C3D Found 0 repeating characters 13:12 > #### while (my $string = ) { for my $chars (2, 4, 8) { printf "Found %2d repeating characters: %s\n", $chars * 2, $1 . $1 if $string =~ /^([0-9a-fA-F]{$chars})\1/; } }