Hi Kurt, You can save yourself the if statement. If the pattern is not found the s/// will not proceed. That will save process ting the line twice when you do match the pattern.
Other than that, you are changing "nl" followed by a single letter to <pX>" with X being a digit corresponding to that letter. Why not put those into a hash? $sub("i" => "", "t" => 1, "h" => 2, "p" =>3); You can also buntch your /,[,< into [] which will save you those ors, which make things much slower s:[/\[<]ni(\w)[/\]>]:<p$sub{$1}>:g; R At 05:30 08/10/2002 -0500, Faymon, Kurt wrote: >Give a 'config file' with 100 or so entries of global subs like: > >"/nli/|[nli]|<nli>","<p>" >"/nlt/|[nlt]|<nlt>","<p1>" >"/nlp/|[nlp]|<nlp>","<p3>" >"/nlh/|[nlh]|<nlh>","<p2>" >And so on... > >I read these into a hash (sPiChars) with 'replace' value as key and the >RegEx of the search terms as value of that give key. Then as I go over >process each record in input, I check to see if one of these values present >and then sub it if so, like: > >foreach $key(keys(%sPiChars)) > { > if($sTempRecord=~m/$sPiChars{$key}/) > { > $sTempRecord=~s/$sPiChars{$key}/$key/g; > } > } > >Which works, but it really kinda slows things down. Willing to admit that >it's a small miracle I even got this to work, I'm guessing there is a better >way to deal with many subs with RegEx; any clued as to which paths I should >wander down in terms of increasing the efficiency of this? > >Thanks - kf >[EMAIL PROTECTED] > > >-- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]