use strict; use List::Util qw(reduce); my @data = qw ( 01 b2 01 00 b6 81 81 01 b4 0a 01 01 01 01 00 01 00 00 01 00 c7 82 82 01 b2 01 00 b8 ); my $index; reduce { if ($a eq $b && $a =~ m/81|82/) { print "match $a starting at index $index\n"} $index++; $b; } @data; #### match 81 starting at index 6 match 82 starting at index 22 #### for my $i (0 .. $#data) { if ( $data[$i] eq $data[$i+1] && $data[$i] =~ m/81|82/) { print "match $data[$i] starting at index $i\n"; } }