Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: Detect STX and ETX hex in received string

by kcott (Canon)
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

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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005970]
erix imagines that in a true Lancs accent
[choroba]: so a Czech orchestra rehearses a new piece by a German composer
LanX LOL of the day ... the Turkish Anonymous Alcoholics stopped their "No to alcohol" campaign for political reasons ...
LanX omg my browser is posting again on its own ...
[LanX]: choroba: GREAT JOKE! xD
LanX starts googling the punch line ...
[choroba]: suddenly, a weird noise can be heard, and the conductor stops them
[choroba]: (sorry, was interrupted by a call)

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2017-03-27 11:51 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (319 votes). Check out past polls.