Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 264
  • Last Modified:

Multidimentional HASH

I am New to perl,Please help me.
I have 2 Arrays
@ARRAYA=(A,B,C,D,E,A);
@ARRAYB=(1,2,3,4,5,6);

I want to Create a hash out of these two array like

%Hash=('A'=>1 ,6 ,' B' =>2,'C'=>3,'D'=>4,'E'=>5) ;

after creating this hash how take out the value of A ?

0
SWAYAM4U
Asked:
SWAYAM4U
  • 2
  • 2
  • 2
  • +1
2 Solutions
 
woepwobinCommented:
What exactly do you mean by 'take out the value of A' ? What is your expected result?
0
 
SWAYAM4UAuthor Commented:
After creating the hash
The KEy is A and it's value is 1 and 6 .
0
 
woepwobinCommented:
And what is your expected result? What do you want the value to be? 1, or 6, or 7, or "1,6"?
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
FishMongerCommented:
use Data::Dumper;

my @arrayA = qw(A B C D E A);
my @arrayB = qw(1 2 3 4 5 6);

my %hash;
@hash{@arrayA} = @arrayB;

print Dumper \%hash;

Open in new window

0
 
parparovCommented:
You can also:
Install module List::MoreUtils;
use List::MoreUtils qw(mesh);
%hash = mesh(@array_a, @array_b);

Open in new window

0
 
parparovCommented:
Oh you needed a list of values if the key repeats.

Then the script should be:
my @arrayA = qw(A B C D E A);
my @arrayB = qw(1 2 3 4 5 6);

my %hash;
for my $aA (@arrayA) {
  last unless @arrayB;
  if(defined($hash{$aA}) {
    push(@{$hash{$aA}}, shift @arrayB);
  }
  else {
    $hash{$aA} = [shift @arrayB];
  }
}

Open in new window

if you want a consistent data structure.
However if you insist that if there is a single value, it would be a scalar, then use this code:
my @arrayA = qw(A B C D E A);
my @arrayB = qw(1 2 3 4 5 6);

my %hash;
for my $aA (@arrayA) {
  last unless @arrayB;
  if(defined($hash{$aA}) {
    $hash{$aA} = [ $hash{$aA}] unless ref $hash{$aA};
    push(@{$hash{$aA}}, shift @arrayB);
  }
  else {
    $hash{$aA} = shift @arrayB;
  }
}

Open in new window


0
 
SWAYAM4UAuthor Commented:
Thanks a lot to everybody
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now