in reply to Updating database question

And unrelated to your DBI question, but you might could use a data structure of regex objects rather than that frelling huge if monstrosity.

use Tie::RefHash; tie my %m, "Tie::RefHash"; %m = ( qr/abc/ => "ABC", qr/def/ => "XYZ", ); $str = "def"; for my $r ( keys %m ) { if( $str =~ $r ) { $str = $m{$r}; last; } } print $str, "\n"

--
We're looking for people in ATL

Replies are listed 'Best First'.
Re^2: Updating database question
by jhourcle (Prior) on Jun 30, 2005 at 20:41 UTC

    I'd agree about using a structure and walking it, rather than using that giant if/elsif/statement, but I wouldn't recommend using a hash in this case, without knowing more about the problem.

    The example given doesn't specify what is in $row[4], and the regexes given don't lock the match to the full width of the string. Now, it's possible that the original poster intended to match something more like:

    m/^ENG$/i; m/^AVN$/i; m/^TRAN$/i ...etc

    But with what's given, the item being matched might contain 'QMI' (matches 'QM' and 'MI') or 'POLICE TRAN' (again, matches more than one), and so the order that the searches are done might be significant.

    If the items being matched are the full width of the string, then the order isn't significant, but I'd probably not use regexes:

    my %matches = ( ENG => 'EN', AVN => 'AV', TRAN => 'TN', QM => 'QM', MI => 'MI', POLICE => 'MP', MP => 'MP', CHAPLAIN => 'CH', INF => 'IN', FA => 'FA', MED => 'MD', SIG => 'SC', MAIN => 'SS', AR => 'AR', ); if ( exists ( $match{uc($row[4])} ) { $row[3] = $match{uc($row[4])}; } else { $row[3] = 'PU'; }
Re^2: Updating database question
by curtisb (Monk) on Jun 30, 2005 at 18:46 UTC
    Fletch,

    Thanks for the note!

    Side note, what do you mean "We're looking for people in ATL? Who is looking?

    Thanks,
    Bobby

      We have an opening where I work; it was posted on jobs.perl.org but it's fallen out of the DB. I'm in the process of getting the details moved somewhere else that I can link to again and haven't re-linked my signature.

      Update: And it's linked.

      Updated again: And a more permanent official type link.

      --
      We're looking for people in ATL