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
