SvLEN( c ) = 2; #### SvLEN( c ) = 0; #### void strIter(SV* code, SV* string) { dSP; STRLEN i; char* src = SvPV(string, i); SV* c; c = newSV_type(SVt_PV); SvCUR(c) = 1; SvLEN(c) = 0; SvPOK_only(c); SAVE_DEFSV; DEFSV_set(c); while (i--) { SvPVX(c) = src++; PUSHMARK(SP); call_sv(code, G_NOARGS | G_VOID | G_DISCARD); } } #### void strIter(SV* code, SV* string) { dSP; STRLEN i; char* src = SvPV(string, i); char* dst; SV* c; c = newSVpvn(" ", 1); dst = SvPVX(c); SAVE_DEFSV; DEFSV_set(c); while (i--) { *dst = *(src++); PUSHMARK(SP); call_sv(code, G_NOARGS | G_VOID | G_DISCARD); } }