/*---------------------------------------------------------------------------- try_match__() The pattern matching function which includes loading perl interpreter and trying the perl pattern matching. arguments: input: char* string, -- input text char* pattern -- match pattern output:if no match found, return FAILURE (0). ----------------------------------------------------------------------------*/ int try_match__( void ) { SV *text; /* the storage for the string in embedded Perl */ SV *string_buff; /* the storage for the string in embedded Perl */ int was_match; /* number of the matches */ #ifdef MULTI_THREAD if( NULL == th) th = xsb_get_main_thread(); #endif char *string = ptoc_string(CTXTc 1), *pattern = ptoc_string(CTXTc 2); /* first load the perl interpreter, if unloaded */ if (perlObjectStatus == UNLOADED) load_perl__(); text = newSV(0); string_buff = newSV(0); sv_setpv(text, string); /* store the string in the SV */ was_match = match(text, pattern ); global_pattern_mode = is_global_pattern(pattern); SvREFCNT_dec(string_buff); SvREFCNT_dec(text); return(was_match); }
/*---------------------------------------------------------------------------- perl_substitute__() The pattern substitution function which includes loading perl interpreter and doing the pattern substitution, then returning the replaced string. arguments: input: char* string, input text char* pattern, match pattern output:char* string, output text ----------------------------------------------------------------------------*/ int perl_substitute__( void ) { SV *text; /* Perl representation for the string to be modified by substitution */ char *subst_cmd = ptoc_string(CTXTc 2); #ifdef MULTI_THREAD if( NULL == th) th = xsb_get_main_thread(); #endif /* first load the perl interpreter, if unloaded */ if (perlObjectStatus == UNLOADED) load_perl__(); text = newSV(0); sv_setpv(text, ptoc_string(CTXTc 1)); /* put the string to the SV */ if( !substitute(&text, subst_cmd) ) return(FAILURE); global_pattern_mode = is_global_pattern(subst_cmd); if (substituteString != NULL ) free(substituteString); substituteString = malloc(strlen(SvPV(text,PL_na))+1); strcpy(substituteString,SvPV(text,PL_na)); SvREFCNT_dec(text); /*release space*/ ctop_string(CTXTc 3, string_find(substituteString,1)); /*return changed text*/ return SUCCESS; }
/*---------------------------------------------------------------------------- try_match__() The pattern matching function which includes loading perl interpreter and trying the perl pattern matching. arguments: input: char* string, -- input text char* pattern -- match pattern output:if no match found, return FAILURE (0). ----------------------------------------------------------------------------*/ int try_match__( void ) { SV *text; /* the storage for the string in embedded Perl */ SV *string_buff; /* the storage for the string in embedded Perl */ int was_match; /* number of the matches */ char *string = ptoc_string(1), *pattern = ptoc_string(2); /* first load the perl interpreter, if unloaded */ if (perlObjectStatus == UNLOADED) load_perl__(); text = newSV(0); string_buff = newSV(0); sv_setpv(text, string); /* store the string in the SV */ was_match = match(text, pattern ); global_pattern_mode = is_global_pattern(pattern); SvREFCNT_dec(string_buff); SvREFCNT_dec(text); return(was_match); }