Acme-StringFormat
view release on metacpan or search on metacpan
StringFormat.xs view on Meta::CPAN
static OP*
sf_pp_modulo(pTHX){
dVAR; dSP;
SV* lhs = TOPm1s; /* top minus 1 scalar */
SV* rhs = TOPs;
if( my_SvPOK(lhs) ){
dTARGET;
STRLEN len;
const char* start = SvPV_const(lhs, len);
register const char* p = start;
register const char* end = start + len;
bool maybe_tainted = FALSE; /* maybe not used */
/* start of formatter */
while(p < end){
if(*p == '%'){
p++;
if(*p != '%'){
break;
}
}
p++;
}
if(p == end && ckWARN(WARN_PRINTF)){
StringFormat.xs view on Meta::CPAN
p++;
}
else{
break;
}
}
p++;
}
#if 0
printf("#%s\n#", start);
{
int i;
for(i = 0; i < (p - start); i++){
printf(" ");
}
printf("^\n");
}
#endif
sv_vsetpvfn(TARG, start, (STRLEN)(p - start), NULL, &rhs, 1, &maybe_tainted);
if(end != p) sv_catpvn(TARG, p, (STRLEN)(end - p));
if(SvTAINTED(lhs)) SvTAINTED_on(TARG);
if(SvUTF8(lhs)) SvUTF8_on(TARG);
if(opASSIGN){
sv_setsv(lhs, TARG);
TARG = lhs;
}
( run in 0.237 second using v1.01-cache-2.11-cpan-0d8aa00de5b )