On Mon, 26 May 1997 23:40:35 +1000 (EST), Craig Sanders <[EMAIL PROTECTED]> said: > > The database is a .db file created with 'makemap hash redir <redir' > from [:space:]-delimited source input like the following: [...] > //.*riddler.com/Commonwealth/bin/statdeploy.* //www.taz.net.au/blank_ad.gif
The problem is that makemap downcases the keys by default so Commonwealth is commonwealth in the map. Use the -f flag when building the map to disable this behavior. Since you're always scanning the db linearly, though, using a DB map isn't buying you anything. I'd just read the patterns from the text file directly. > $out="" ; > $found = 0 ; > while ((($key,$record) = each %redir_db) && ! $found) { > if (($url =~ /$key/)) { > $out = $url ; > $out =~ s/$key/$record/ ; > $found = 1 ; > } ; > } ; > > if ($debug) { > print $url, "==>" ; > } ; > print $out, "\n" ; Gratuitous unsolicited style tip #1: Don't put semicolons after a closing brace except for do and eval blocks, and sub ref constructors. Gratuitous unsolicited style tip #2: This code would more idiomatically be print "$url==>" if $debug; while (($key, $record) = each %redir_db) { if ($url =~ s/$key/$record/) { print $url; last; } } print "\n"; -- Roderick Schertler [EMAIL PROTECTED] -- TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to [EMAIL PROTECTED] . Trouble? e-mail to [EMAIL PROTECTED] .