hash of arrays question

Discussion in 'Perl' started by John Gregory, Jun 11, 2006.

  1. John Gregory

    John Gregory Guest

    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
     
    John Gregory, Jun 11, 2006
    #1
    1. Advertisements

  2. John Gregory

    Skeleton Man Guest

    I'm new to perl and have a question. The perl book
    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
     
    Skeleton Man, Jun 12, 2006
    #2
    1. Advertisements

  3. John Gregory

    mzi Guest

    This means: hash values can be references.
     
    mzi, Jun 12, 2006
    #3
  4. I'm new to perl and have a question. The perl book
    AFAIK, the reverse function takes a list/array, and returns
    it in the opposite order.


    Something like this?

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

    I can then reference like follows:

    print $hashofarrays{key}[2]

    outputs: 3
     
    Michael Gaylord, Sep 27, 2006
    #4
  5. John Gregory

    joesmith

    Joined:
    Aug 7, 2008
    Messages:
    1
    Likes Received:
    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 ?
     
    joesmith, Aug 7, 2008
    #5
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.