develooper Front page | perl.perl6.users | Postings from February 2019

Re: binary test and position?

Thread Previous | Thread Next
From:
ToddAndMargo via perl6-users
Date:
February 2, 2019 04:07
Subject:
Re: binary test and position?
Message ID:
1c19b1b4-e0a3-0464-1d46-6161c2a27645@zoho.com
On 2/1/19 8:03 PM, ToddAndMargo via perl6-users wrote:
>  > On Fri, Feb 1, 2019 at 9:37 PM ToddAndMargo via perl6-users
>  > <perl6-users@perl.org> wrote:
>  >>
>  >> On 2/1/19 7:22 PM, ToddAndMargo via perl6-users wrote:
>  >>> Hi All,
>  >>>
>  >>> On a type Buf, what do I use to check for the
>  >>> position of a byte pattern?
>  >>>
>  >>>
>  >>> Many thanks,
>  >>> -T
>  >>
>  >>
>  >> Basically, what am I doing wrong here?
>  >>
>  >> $ p6 'my $handle=open("filever.exe", :bin, :ro); my Buf $b; $b=
>  >> $handle.read(5); say $b; say $b[2..4];; if ( $b[2..4] eq 0x90,0x00,0x04
>  >> ) {say "y";} else {say "n"}; $handle.close;'
>  >> Buf[uint8]:0x<4D 5A 90 00 03>
>  >> (144 0 3)
>  >> y
>  >>
>  >>
>  >> I am testing to see if the pattern 0x90 0x00 0x04 exists,
>  >> which is does not.
> 
> 
> On 2/1/19 7:57 PM, Brad Gilbert wrote:
>> `eq` is string equality
>> `==` is numeric equality
>>
>> a Buf is neither.
>>
>> You want `eqv` (equivalent)
>>
>>      $b[2..4] eqv (0x90,0x00,0x04)
>>
> 
> That was it.  Thank you!
> 
> $ p6 'my $handle=open("filever.exe", :bin, :ro); my Buf $b; $b= 
> $handle.read(5); say $b; if ( $b[2..4] eqv (0x90,0x00,0x03) ) {say "y";} 
> else {say "n"}; $handle.close;'
> Buf[uint8]:0x<4D 5A 90 00 03>
> y
> 
> $ p6 'my $handle=open("filever.exe", :bin, :ro); my Buf $b; $b= 
> $handle.read(5); say $b; if ( $b[2..4] eqv (0x90,0x00,0x04) ) {say "y";} 
> else {say "n"}; $handle.close;'
> Buf[uint8]:0x<4D 5A 90 00 03>
> n


How do I find the position of a pattern in a Buf?

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About