Jason,

 Ummm...yes but not exactly ... there is no reference
to a scalar that I can see. Just a hash of arrays as 
you mentioned seeing. That is it. The scalar 'unique'
is simply the key.

You could also set the element values specifically
like this:


  $my_hash{$identifier}[0] = $data1;
  $my_hash{$identifier}[1] = $data2;

  (without the push onto the array)

  $identifier is the key - the value for this key in
the HASH is a reference to an ARRAY - not a SCALAR.
The array elements are 0 and 1 (1st and 2nd position
as you mentioned). And the values of these array
elements are the SCALARS $data1 and $data2.

HTH,

John



--- "Allison, Jason (JALLISON)" <[EMAIL PROTECTED]>
wrote:

> That looks to be a lot more clean than my methods.
> 
> I see what is going on below, though I don't think I
> am clear on exactly
> what is going on.  You define the hash that uses a
> scalar 'unique' to
> reference an array that contains data1 and data2 at
> array positions 1
> and 2 respectfully?  So basically a hash of arrays
> referenced by
> scalars?
> 
> Thanks,
> Jason
> 
> 
> -----Original Message-----
> From: John V. Pataki [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, December 29, 2004 4:28 PM
> To: Allison, Jason (JALLISON);
> [email protected]
> Subject: RE: Hash with multiple keys?
> 
> 
> Jason,
> 
> How about using an array as the hash value? And the
> elements of the 2 element array as the values you
> need?
> 
>  my %my_hash;
> 
>  my $identifier = 'unique';
>  my $data1 = 'a';
>  my $data2 = '2';
> 
>  push @{$my_hash{$identifier}},$data1;
>  push @{$my_hash{$identifier}},$data2;
> 
>  then you would get
>  
>  $my_hash{$identifier}[0] == $data1 
>  and
>  $my_hash{$identifier}[1] == $data2 
> 
>  Does this work for you?
> 
> John
> 
>  
> 
> 
> --- "Allison, Jason (JALLISON)" <[EMAIL PROTECTED]>
> wrote:
> 
> > Thanks all for the replies.
> > 
> > My understanding is that two dimentional objects
> are
> > usefull when $key1
> > (1 row) represents an unique identifier applied to
> > $key2 (1 column) to
> > 'point' to one piece of data (cell), if we were
> > looking at a two
> > dimensional object (flat spreadsheet).
> > 
> > What I am looking for (and I think it was hinted
> in
> > a couple emails) is
> > a way to store 2 pieces of data that both have the
> > same key.  This can
> > be accomplished a number of ways, I guess it comes
> > down to me wondering
> > which is the 'perl' way.  And if you cant tell, I
> am
> > a new perl convert.
> > Some examples of what I mean:
> > 
> > my %data1_hash; my %data2_hash; my %unique_hash;
> my
> > %my_hash;
> > 
> > my $identifier = 'unique';
> > my $data1 = 'a';
> > my $data2 = '2';
> > 
> > # 2 hashes
> > $data1_hash{$unique} = $data1;
> > $data2_hash($unique) = $data2;
> > 
> > # joined data with common delimeter, need to split
> > out when want to
> > access $key1, $key2
> > $unique_hash($unique) = join('|', $data1, $data2);
> > 
> > # What I was tring to do.  Hoping there was an
> easy
> > way to pull out both
> > $unique and $data1
> > # via some 'keys' call.  I guess this could be
> done
> > with a join and
> > split, was wondering if there
> > # was another way.
> > $my_hash($unique, $key1) = $key2
> > 
> > foreach $key (keys(%my_hash)) {
> >   my ($value1, value2) = // split $key
> > 
> > Thanks,
> > Jason
> > 
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> >
> [mailto:[EMAIL PROTECTED]
> > On Behalf Of Don
> > VanSyckel
> > Sent: Wednesday, December 29, 2004 2:48 PM
> > To: [email protected]
> > Subject: Re: Hash with multiple keys?
> > 
> > 
> > The hash you listed has one key comprised to the
> > values of two
> > variables.  I believe you meant to use
> > 
> > $hash{$key1}{$key2} = $data;
> > ...
> > forash $key1 (sort keys %hash)
> > {  foreach $key2 (sort keys %{$hash{$key1}})
> >     {  print "key1 = $key1\tkey2 = $key2\n";
> >     }
> > }
> > 
> > Don
> > 
> > 
> > Allison, Jason (JALLISON) wrote:
> > > Sorry for the horribly lame question, but I am
> not
> > having any luck
> > > finding an answer, probably because I don't know
> > how to phrase the
> > > question properly.
> > > 
> > > When I have a hash defined by multiple keys, how
> > can I pull both keys
> > > out?
> > > 
> > > $hash{$key1, $key2} = $data;
> > > ...
> > > foreach $key (sort(keys(%hash))) {
> > >   # here ??
> > >   my ($key1, $key2) = split(/ /, $key, 2);
> > > }
> > > 
> > > Thanks a bunch,
> > > Jason
> > > 
> > > 
> > >
> >
>
----------------------------------------------------------------------
> > > --
> > > 
> > > _______________________________________________
> > > ActivePerl mailing list
> > > [email protected]
> > > To unsubscribe:
> > http://listserv.ActiveState.com/mailman/mysubs
> > 
> > _______________________________________________
> > ActivePerl mailing list
> > [email protected]
> > To unsubscribe:
> http://listserv.ActiveState.com/mailman/mysubs
> > 
> > _______________________________________________
> > ActivePerl mailing list
> > [email protected]
> > To unsubscribe:
> http://listserv.ActiveState.com/mailman/mysubs
> > 
> 
> 
> =====
> John V. Pataki
> Logged in to my Yahoo Mail account on the web.
> 
> 
> _______________________________________________
> ActivePerl mailing list
> [email protected]
> To unsubscribe:
> http://listserv.ActiveState.com/mailman/mysubs
> 


=====
John V. Pataki
Logged in to my Yahoo Mail account on the web.

_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to