Because hashes support a many-to-one style mapping, this should not be problematic, excepting of course the risk of one-offs in entering the hash values. You could easily just do something like:

my %field_hash = (unvLocalPhone => "Phone", unvCampusPhone=> "Phone", unvLocalAddress => "Address", ); foreach my $field (@ldapFields) { if (exists $field_hash{$field}) { $field = $field_hash{$field}; } }

As for performance, using a hash will be dramatically faster for this section than a series of elsifs would be - think of it as the hash takes a little longer to get the right answer the first time as opposed to possibly having to test every possible value. People much smarter than me have worked hard on making Perl's hash lookups quite fast.

But more importantly, never forget Donald_Knuth's classic quote on the matter: premature optimization is the root of all evil. Wait until you have your code working, then benchmark and profile to find your bottlenecks. When you get that far, look up Devel::NYTProf and Benchmark.


In reply to Re^4: A more efficient way to do this? by kennethk
in thread A more efficient way to do this? by mirage4d

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.