On 2/1/19 8:07 PM, ToddAndMargo via perl6-users wrote:
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-us...@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?
Need `pos` for Buf