Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Hash creation

by igelkott (Priest)
on May 02, 2008 at 19:23 UTC ( [id://684239]=note: print w/replies, xml ) Need Help??


in reply to Hash creation

Just too many brackets.

$newhash{new_value} = $input{red};

Replies are listed 'Best First'.
Re^2: Hash creation
by applejacks (Initiate) on May 02, 2008 at 20:11 UTC
    Thanks for your replies..... I'm not sure they fix my problem. Here is my code creating the first hash:

    foreach (@inputfields) {
    ($fname, $fvalue)=split(/:/, $_);
    $inputs{$fname}=$fvalue; }

    Here is the code for the second hash:
    $defref = {
    requester_name => $inputs{"Requester Email"},
    requester_email => $inputs{"Project Manager Name"} }

    Where the actual "Requester Email" and "Project Manager Name" are actual key values (i.e. $fname). As far as I can tell, nothing ever gets loaded into $defref. I am making illegal references? Thanks!

      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

      Did you already tried to print the desired values from %inputs to see if they are really set?

      Did you check, what's defined in %inputs (maybe a Typo bothers you here)?

      I would check if $inputs{"Requester Email"} exists and is defined when assigning it as new Value..e.g.

      $derfref = { new_key => exists $inputs{old key} and defined $inputs{old key} ? $inputs{old key} : "--no old key--" };

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://684239]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (3)
As of 2024-03-29 02:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found