A few points:
- You appear to have associated the email key with the name value and vice versa when creating your defref anonymous hash. I have changed them around in the code below
- You can populate the %inputs hash without the need for the $fname and $fvalue intermediate variables by using map
- Always put use strict; and use warnings at the top of your scripts to enforce disciplinr and catch errors
- The Data::Dumper module is worth it's weight in doughnuts when you are not sure what your data structures look like. I use it below to show what we started with and what has ended up in the hashes
Here's the code
use strict;
use warnings;
use Data::Dumper;
my @inputFields = (
q{Requester Email:fredb@big.com},
q{Project Manager Name:Fred Bloggs},
);
my %inputs =
map { split m{:} }
@inputFields;
my $defRef = {
requester_email => $inputs{ q{Requester Email} },
requester_name => $inputs{ q{Project Manager Name} },
};
print Data::Dumper->Dumpxs(
[ \ @inputFields, \ %inputs, $defRef ],
[ qw{*inputFields *inputs defRef} ],
);
and here's the output
@inputFields = (
'Requester Email:fredb@big.com',
'Project Manager Name:Fred Bloggs'
);
%inputs = (
'Requester Email' => 'fredb@big.com',
'Project Manager Name' => 'Fred Bloggs'
);
$defRef = {
'requester_name' => 'Fred Bloggs',
'requester_email' => 'fredb@big.com'
};
I hope this is helpful. Cheers, JohnGG |