Hello,
I'm porting some personal perl5 scripts to Raku, and one of those
scripts is using Inline::C.
The inline::c code would contain a function with the signature:
AV* encode(unsigned char* data, size_t data_size)
Description of the parameters on the original perl script:
data -> binary
Hi David,
the first thing that catches my eye is that your struct and the class
have the members switched around, so you're already almost guaranteed to
read a bogus pointer when trying to get the data.
Also, please note that returning structs directly, or passing structs
directly, as arguments
Thanks for the help.
> EncodedData *encode(unsigned char* data, size_t data_size)
> and return
> Also your struct and CStruct are defining the contents in the reverse
> order. They must
> match up exactly.
>
I did those two changes:
"""
EncodedData* ed = malloc(sizeof(EncodedData));
ed->data
The 「@i」 is defined within the 「BEGIN」 block, so it is scoped to the
「BEGIN」 block.
If you didn't want that, don't use a *block* with 「BEGIN」.
BEGIN my @i;
Also you wrote the 「if」 wrong.
There shouldn't be a 「;」 before the 「if」.
You also don't need to use 「$_ ~~ 」 with 「/^WARN/」 as that
On Fri, May 8, 2020 at 5:16 AM WFB wrote:
>
> Hi,
>
> I am trying to write an one-liner to go through all lines in a logfile and
> look for an certain key word, store the line and sort them before printing
> them out.
>
> My approach was:
> raku -ne "BEGIN {my @i }; @i.push($_); if $_ ~~
On Fri, May 8, 2020 at 8:49 AM David Santiago wrote:
> EncodedData* ed = malloc(sizeof(EncodedData));
> ed->data = encbuffer;
> ed->crc32 = crc32;
> return ed;
You're returning a pointer to encbuffer -- make sure the storage for
that is kept around
somewhere. If it is passed in from Raku,
Hi,
I am trying to write an one-liner to go through all lines in a logfile and
look for an certain key word, store the line and sort them before printing
them out.
My approach was:
raku -ne "BEGIN {my @i }; @i.push($_); if $_ ~~ /^WARN/; END { @i.sort.say
}"
That does not work because @i does
On Fri, May 8, 2020 at 6:44 AM David Santiago wrote:
>
> I'm porting some personal perl5 scripts to Raku, and one of those
> scripts is using Inline::C.
> [...]
> Why? How do i fix it?
I haven't tried all of this, but the first thing that leaps out is
that repr('CStruct') is
not a struct -- it
ooh neat! I didn't know. Indeed this works. Thanks Sean!
raku -ne'push my @i: $_ if .starts-with: q[WARN]; END .say for @i'
sample.log
-y
On Fri, May 8, 2020 at 1:04 PM Sean McAfee wrote:
> On Fri, May 8, 2020 at 6:53 AM Brad Gilbert wrote:
>
>> So together that would be:
>>
>> raku
Ooops forgot the sort... let's golf with the hyper-operator again...
raku -ne'push my @i: $_ if .starts-with: q[WARN]; END @i.sort>>.say'
sample.log
-y
On Fri, May 8, 2020 at 1:10 PM yary wrote:
> ooh neat! I didn't know. Indeed this works. Thanks Sean!
>
> raku -ne'push my @i: $_ if
Maybe?
perl6 -e 'lines() ==> grep /^WARN/ ==> sort() ==> join("\n") ==> say();'
HTH, Bill.
On Fri, May 8, 2020 at 9:10 AM Fernando Santagata
wrote:
>
> raku -e'.say for lines() ==> grep(/^WARN/) ==> sort' sample.log
>
> is not very satisfying because for the "for" which breaks the flow.
>
Thanks for the information!
Have a great weekend!
Best regards,
David Santiago
Tobias Boege escreveu no dia sexta, 8/05/2020 à(s) 15:52:
>
> On Fri, 08 May 2020, David Santiago wrote:
> > I also noticed that although my data string is defined as
> > CArray[uint8], when i loop through the
On Fri, May 8, 2020 at 6:53 AM Brad Gilbert wrote:
> So together that would be:
>
> raku -ne 'BEGIN my @i; @i.push($_) if /^WARN/; END .say for @i.sort'
>
Or alternately the main body of the loop can be written:
(my @i).push($_) if /^WARN/;
Or even:
push my @i: $_ if /^WARN/;
On Fri, 08 May 2020, David Santiago wrote:
> I also noticed that although my data string is defined as
> CArray[uint8], when i loop through the array, the values are signed
> ints:
>
> say $_ for $ed.data[0..10];
>
> output:
>
> -98
There is an old open bug report about this:
I like this formulation Fernando posted (removed a set of parens not needed
with method calls)
raku -e'lines.grep(/^WARN/).sort».say' sample.log
It is clean, all left-to-right, and doesn't use "map" for its side-effects
only.
Putting the feed operator back in where it would work–have to keep
I also noticed that although my data string is defined as
CArray[uint8], when i loop through the array, the values are signed
ints:
say $_ for $ed.data[0..10];
output:
-98
-110
-109
-99
74
-109
-99
74
-105
-93
74
Is it possible to not "sign" them?
Regards,
David Santiago
Curt Tilmes
raku -e'.say for lines() ==> grep(/^WARN/) ==> sort' sample.log
is not very satisfying because for the "for" which breaks the flow.
OTOH this
raku -e'lines().grep(/^WARN/).sort».say' sample.log
doesn't use the feed operator and this
raku -e'lines() ==> grep(/^WARN/) ==> sort() ==> say()'
On Fri, May 8, 2020 at 6:10 PM Fernando Santagata
wrote:
> raku -e'lines() ==> grep(/^WARN/) ==> sort() ==> reduce({$^a ~ "\n" ~
> $^b}) ==> say()' sample.log
>
and the reduce call can be written more compactly: reduce({"$^a\n$^b"})
--
Fernando Santagata
18 matches
Mail list logo