in reply to Inline C discovery

Finally after looking deeper I found another way to handle arrays and not using pack. Update: fastcmp optimized.
my @a = ("AAAA", "BBBB", "CCCCC"); print array_search(\@a,"B"); __END__ __C__ #include <stdio.h> void hello_world() { printf ("Hello CDRs checkers!\n"); } //s1 is the substring, s2 is the string int fastcmp ( char *p1, char *p2 ) { int count = 0; while( *p1 ){ char *a = p1, *b = p2; while( *a && *a == *b ) {a++;b++;} count += !*b; ++p1; } return count; } int array_search(AV *a1, SV *s1){ STRLEN bytes1; char *p1; long a1_size,i; a1_size = av_len(a1); //printf ("%d\n",a1_size); //printf ("%s\n",SvPV_nolen (*elem)); p1 = SvPV(s1,bytes1); for(i=0;i<=a1_size;++i){ SV** elem = av_fetch(a1, i, 0); printf("%s %s\n",p1, SvPV_nolen (*elem)); if (fastcmp(p1,SvPV_nolen (*elem)) > 0){ return 1; } } return 0; }

This will produce :

B AAAA String size: 1 Char at 0 is B = A B BBBB String size: 1 Char at 0 is B = B 1