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