Instead of iterating through the keys and then using the key to get the value, it's easier on the eyes and I believe a little bit more efficient (could be wrong there) to do it this way:
while ( (my $key, my $value) = each %yourhash ) { ... } This saves you from having to use $hash{$key}...you can just say $value. >===== Original Message From "Jenda Krynicky" <[EMAIL PROTECTED]> ===== >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] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]