From: "Faymon, Kurt" <[EMAIL PROTECTED]>
> 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?
1) Compile the regexps when you are storing them:
...
$sPiChars{$replace} = qr/$regexp/;
...
the rest of the code may stay the same.
2) Why do you first test whether the regexp matches and then replace?
foreach $key(keys(%sPiChars)) {
$sTempRecord =~ s/$sPiChars{$key}/$key/g;
}
or (if you need to dome something more in case it matched)
foreach $key(keys(%sPiChars)) {
if($sTempRecord =~ s/$sPiChars{$key}/$key/g) {
...
}
}
HTH, Jenda
=========== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==========
There is a reason for living. There must be. I've seen it somewhere.
It's just that in the mess on my table ... and in my brain
I can't find it.
--- me
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]