hash of arrays question

J

John Gregory

I'm new to perl and have a question. The perl book
says that hashes map keys to values. Using the reverse
function you can map values to keys. My problem is
I have a hash of arrays and I want to map an array
of values to a particular key. Is there any way to
do this?

Thanks,

John
 
S

Skeleton Man

I'm new to perl and have a question. The perl book
says that hashes map keys to values. Using the reverse
function you can map values to keys. My problem is
I have a hash of arrays and I want to map an array
of values to a particular key. Is there any way to
do this?

There are two ways to do this:

$sample{'key1'} = ['item1', 'item2', 'item3']; # Array of values mapped to a
single hash key (note the use of square brackets [])
print $sample{'key1'}[0]; # Prints "item1"

Or:

@data = ('item4, 'item5', 'item6', 'item7'); # Create a new array
$sample{'key2'} = \@data; # Take a reference to the
array (backslash operator), you could use any existing array here too.
print $sample{'key2'};


Let me know if you need anything explained a little more clearly :)

Regards,
Chris
 
M

mzi

Skeleton said:
I'm new to perl and have a question. The perl book
says that hashes map keys to values. Using the reverse
function you can map values to keys. My problem is
I have a hash of arrays and I want to map an array
of values to a particular key. Is there any way to
do this?

There are two ways to do this:

$sample{'key1'} = ['item1', 'item2', 'item3']; # Array of values mapped to
a single hash key (note the use of square brackets [])
print $sample{'key1'}[0]; # Prints "item1"

Or:

@data = ('item4, 'item5', 'item6', 'item7'); # Create a new array
$sample{'key2'} = \@data; # Take a reference to the
array (backslash operator), you could use any existing array here too.
print $sample{'key2'};


Let me know if you need anything explained a little more clearly :)

This means: hash values can be references.
 
M

Michael Gaylord

I'm new to perl and have a question. The perl book
says that hashes map keys to values. Using the reverse
function you can map values to keys.

AFAIK, the reverse function takes a list/array, and returns
it in the opposite order.


My problem is
I have a hash of arrays and I want to map an array
of values to a particular key. Is there any way to
do this?

Something like this?

@contents = (1,2,3,4,5)
$hashofarrays{key} = \@contents

I can then reference like follows:

print $hashofarrays{key}[2]

outputs: 3
 
Joined
Aug 7, 2008
Messages
1
Reaction score
0
Joe

Hi

I tried this output but didn't print

$sample{key1} =(1,2,3,4,5);
print $sample{key1}[0]; - it doesn't print the output of 1.


any idea why ?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top