I thought I mentioned I was looking for AWTDI. On a personal note, I enjoy hashes over arrays.
I find it more intuitive to say $hash{10} to get the tenth line, than $array[9]. I also
like being able to 'delete $hash{10}' and actually have my hash have 1 less key. And, I would have to
benchmark this, but since I was just looking for AWTDI, I don't care enough to, but depending on the size
of the file, the hash lookups should be faster.
PS: Before someone says that you can delete an array element.. yes, you can. But all it does it
put that element back to an uninitialized state, it doesn't really delete the element. If you have an array with
10 elements, and you delete one, you still have 10 elements.
Cheers,
KM | [reply] [d/l] |
I only offered that because if you're dealing with a largish amount of data, it's significantly more efficient to deal with a sequential data structure (such as an array) than a "random-access" one with a sequential key.
| [reply] |
do something with $array[8]
Now, do something with $array[9]
Well, that means nothing to me. How do I know that the 8th element is
the 'FNAME' field and the 9th is the 'LNAME' field? I don't! Also, what happens
when you change the table? BAM! Things can get seriously out of whack if I make a
'MNAME' field after the 'FNAME' field.
So, I started off by changing all his fetchrow_array's to fetchrow_hashref's. Now,
I had a more intuitive (and scalable) way to do things like:
do something with $hashref->{FNAME}
do something else with $hashref->{LNAME}
Don't forget $hashref->{MNAME}
Did I sacrifice some speed by using a hash(ref)? Maybe. Is the script now easier to read and
maintain? Definitely! So, which is more efficient? I say it is more efficient to have readable and
maintainable code. This saves work-time, which is much more measurable than fractions of a second differences
that may be gained/lost with using one data structure vs. another.
So, I disagree that it is more efficient to use an array, based on my experiences. But, regardless, this was an
exercise to find AWTDI ;-)
Cheers,
KM | [reply] [d/l] [select] |