Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: Not meaning to add values to a hash

by flexvault (Monsignor)
on Dec 22, 2012 at 14:18 UTC ( #1010016=note: print w/replies, xml ) Need Help??

in reply to Not meaning to add values to a hash


Note: These are suggestions, or just some things to think about!

In your assignment code below (abbreviated), you need some testing for input accuracy.

$flag_assignments{$key}{"starrez"} = $info[0]; . . . $flag_assignments{$key}{"NR-Spring"} = $info[10];
  • How about a test for the exact number of commas? If the CSV record exists but only has 3 fields, the rest of your testing is going to be wrong.
  • What if one of the fields looks like:
    ,,"Jones, Mr.",,,
    How will that affect your hash?

Since the question about your script wouldn't be needed if the input data was 100%, try doing some reasonable verification before building the hash.

If you are building the input data, why not build it as a hash record, i.e.

my $record = qq|startez\t$info[0]$sep . . . |; ## $sep is a field +separator defined by you

You can 'split' on the separator("$sep") to get the record into fields, and a simple 'foreach' loop to build the hash by 'split'ing on tab("\t"). Then you know the hash is correct. You can write this record to a file or send it to a database. Perl doesn't care how big it is, and you won't either. If fields are added, your original data will still be correct.

If you don't have control over the input, then what will happen if one field is added in the middle of the record? Checking on the exact number of fields will at least let you know that something is wrong, and you can fix it.

Once you verify the input, your script will do what you want.

Good Luck...Ed

"Well done is better than well said." - Benjamin Franklin

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010016]
[marioroy]: Disciplus My wife and I went on vacation. At work, I was stuck polling SNMP from 20 million devices. It would hang at 80,000. On the mist boat, hear a voice to enable grace in the design that 10x and more performance awaits.
[Lady_Aleena]: Women need challenges too karlgoethebier. 8)
[marioroy]: s/hear/heard/
[karlgoethebier]: Discipulus: No. See https://en. wiki/Tribe_( Native_American)
[karlgoethebier]: They took Unix from some aliens
[marioroy]: Perl is so powerful that it can poll 40 metrics from 20 million devices in 40 minutes using 4 nodes only.
[karlgoethebier]: http://www. aliens.htm
[Lady_Aleena]: marioroy, I can't decide whether or not to move my RolePlaying:: Random:: modules to just Random::. I'm not as sophisticated as most here.
[marioroy]: Naming things can be difficult, sometimes more so that the actual code :)
[karlgoethebier]: Lady_Aleena: You need to jump to some conclusion

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (9)
As of 2017-05-29 08:53 GMT
Find Nodes?
    Voting Booth?