Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Detect STX and ETX hex in received string

by kcott (Abbot)
on Nov 28, 2012 at 07:28 UTC ( #1005970=note: print w/ replies, xml ) Need Help??


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

-- Ken


Comment on Re: Detect STX and ETX hex in received string
Select or Download Code
Replies are listed 'Best First'.
Re^2: Detect STX and ETX hex in received string
by ColonelPanic (Friar) on Nov 28, 2012 at 09:05 UTC

    This regex would not match anything unless an ETX was found, while the poster wanted to stop reading as soon as 80 bytes were found.

    (Apologies; originally this comment contained a typo such that it made no sense)



    When's the last time you used duct tape on a duct? --Larry Wall

      I'd say that's a matter of interpretation. I did consider the situation where no ETX existed; however, jagexCoder wrote "... packets of interest that are within STX and ETX endings.". Accordingly, I coded for STX and ETX to always be present. Perhaps wait for the OP to clarify this.

      [Aside: You appear to have removed the original typo, so I don't know what you're apologising for. Regardless, I accept your apology. :-) ]

      Update: Oh dear! Having posted this, I see I've also introduced a typo such that it made no sense.
      s/Perhaps wait for to OP can clarify this./Perhaps wait for the OP to clarify this./

      -- Ken

        Fair enough, I suppose it is a matter of interpretation.


        When's the last time you used duct tape on a duct? --Larry Wall

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005970]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (12)
As of 2015-07-29 06:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (260 votes), past polls