in reply to confused with Inline::C again

If you want to return a list of values (suffixes) that you can assign in a statement like

my @a = Suff(@string);

you'd need to return them on the stack (Perl's stack, not C's). For this, there are the Inline macros

Inline_Stack_Vars Inline_Stack_Reset Inline_Stack_Push(sv) Inline_Stack_Done

which should be used in that sequence (of course, push as many values as you need).

As an alternative, you could create (and fill) an array (AV) on the XS side, and return a reference to it. This means, you'd assign it like this

my $aref = Suff(@string); # print "@$aref"; # or whatever

Other than that, it's hard to help (well, for me at least), because from your sample code I can't really make any inferences as to what exactly you're trying to do.

Update: (in response to your update)

#!/usr/bin/perl -wl use strict; use Inline C => <<'END_C'; void test() { Inline_Stack_Vars; Inline_Stack_Reset; char *string = "lhfsadgfbfsdaubsdkj"; int i; STRLEN n = strlen(string); for(i=0; i<n; i++){ Inline_Stack_Push( sv_2mortal( newSVpv(string + i, 0) ) ); } Inline_Stack_Done; } END_C my @a = test(); print for @a;

Output:

lhfsadgfbfsdaubsdkj hfsadgfbfsdaubsdkj fsadgfbfsdaubsdkj sadgfbfsdaubsdkj adgfbfsdaubsdkj dgfbfsdaubsdkj gfbfsdaubsdkj fbfsdaubsdkj bfsdaubsdkj fsdaubsdkj sdaubsdkj daubsdkj aubsdkj ubsdkj bsdkj sdkj dkj kj j