Hi Nicole

"Nicole Seitz" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> hi there!
>
> I've got  a problem with a complex data structure and hope you can help
me.
>
> I know that I can't have a hash whose values are arrays. So I  tried to
> build a hash of references to arrays.
>
> I guess I've  made some mistakes .
>

Not many: you're very close :)

>
> This is what my hash looks like:
>
> %myHash = ();
> # lots of  code here

    my %myHash;

You _do_ have 'use strict' :-?

> $myHash{"245"} = [[$len245oa,$pos,$tag245oa]];
> #some code here
>
> $myHash{"856"} = [[$len856_41,$pos,$tag856_41]];
> #some code here

Fine so far, but it would be more straightforward like this:

    push @{$myHash{245}}, [$len245oa,$pos,$tag245oa];
    push @{$myHash{856}}, [$len856_41,$pos,$tag856_41];

Note that you don't in general need quotes around a hash key.

> #now I have to add a new element(which is also an array)  to the outer
> anonymous array
> #Is the following correct?
> $myHash{"856"}[1] = [$len856_42,$pos,$tag856_42];
>

Yes, but you could just carry on as before:

    push @{$myHash{856}}, [$len856_42,$pos,$tag856_42];

Using 'push' you don't have to work out the index of the next array element
to insert.

>
> #Then I'd like to iterate over  the array of sorted hash keys(no problem)
>
> @sortedKeys = sort keys %myHash;
> foreach $key (@sortedKeys) {

There's no need to store the sorted list:

    foreach $key (sort keys %myHash)

> #  now I have to change the value of each second element of the inner
> arrays($myHash{$key} [$index][1]  ???)
> #Unfortunately, I don't know how to do this. I guess, first, I need
> another loop.But then how to access the second element and overwrite it???

Yes, you could put in another loop:

    for ( $index = 0; $index < @{$myHash{$key}}; $index++ )
    {
        print $myHash{$key}[$index][1], "\n";
    }

but more simply, just:

    foreach $item ( @{$myHash{$key}} )
    {
        print $item->[1], "\n";    # or $$item[1]
    }

>
>
> Many thanx in advance.
>

Welcome. Cheers,

Rob




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to