in reply to
Detect STX and ETX hex in received string
G'day jagexCoder,
Welcome to the monastery.
This regexp seems to do what you want:
qr{ [$STX] ( [^$ETX]{0,80} ) [^$ETX]* [$ETX] }x
Here's my test:
$ perl -Mstrict -Mwarnings -e '
my ($STX, $ETX) = (chr(2), chr(3));
my $re = qr{ [$STX] ( [^$ETX]{0,80} ) [^$ETX]* [$ETX] }x;
my $empty = $STX . $ETX;
my $short = $STX . "a" x 79 . $ETX;
my $exact = $STX . "a" x 80 . $ETX;
my $long = $STX . "a" x 81 . $ETX;
my $buf = $empty . $short . $exact . $long;
print "1234567890" x 8, "\n";
print "$_\n" for $buf =~ /$re/g;
print "1234567890" x 8, "\n";
'
1234567890123456789012345678901234567890123456789012345678901234567890
+1234567890
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaa
1234567890123456789012345678901234567890123456789012345678901234567890
+1234567890