Gerald Host wrote:
> I'm using DBI's selectall_hashref with 5 key columns.  I want to display
> each row where key col 1 is 'yes' or NULL (undef or '' ?)
> 
> 
> foreach my $medCategory (keys %{$href->{'yes'}->{qw('' 'yes')}->{qw('' 
> 'yes')}}) {
>     foreach my $med (keys %{$href->{qw('yes')}->{qw('' 'yes')}->{qw('' 
> 'yes')}->{$medCategory}}) {
>         foreach my $ID (keys %{$href->{qw('yes')}->{qw('' 'yes')}->{qw('' 
> 'yes')}->{$medCategory}->{$med}}) {
> 
>             print qq{ $href->{qw('yes')}->{qw('' 'yes')}->{qw('' 
> 'yes')}->{$medCategory}->{$med}->{$ID}->{ID} };
>             print qq{ $href->{qw('yes')}->{qw('' 'yes')}->{qw('' 
> 'yes')}->{$medCategory}->{$med}->{$ID}->{Medication} };
>             }
>         }
>     }
> 
> This isn't working of course because I don't quite understand the syntax I
> need.  Can someone give me a hint?  Thanks!

A slice of a variable has to start with @, for example:

@array_slice[ 1 .. 9 ];
@hash_slice{ 'one', 'two', 'three' };

If you have a multidimensional data structure you can only slice at the end:

@{ $array_ref->[ 3 ][ 7 ] }[ 1 .. 9 ];
@{ $hash_ref->{ x }{ y } }{ 'one', 'two', 'three' };

In your example:

%{ $href->{ 'yes' }->{ qw( '' 'yes' ) }->{ qw( '' 'yes' ) } }

There is no slice, and the lists evaluate to the last item in the list so what
you actually have is:

%{ $href->{ 'yes' }->{ "'yes'" }->{ "'yes'" } }

And yes, the single quotes are included in the key as that is the way qw() 
works.

It looks like you want something like this:

for my $href1 ( @{ $href->{ yes } }{ '', 'yes' } ) {
    for my $href2 ( @{ $href1 }{ '', 'yes' } ) {
        for my $medCategory ( keys %$href2 ) {
            for my $med ( keys %{ $href2->{ $medCategory } } ) {
                for my $ID ( keys %{ $href2->{ $medCategory }{ $med } } ) {

                    print " $href2->{ $medCategory }{ $med }{ $ID }{ ID } ";
                    print " $href2->{ $medCategory }{ $med }{ $ID }{
Medication } ";
                    }
                }
            }
        }
    }




John
-- 
Perl isn't a toolbox, but a small machine shop where you can special-order
certain sorts of tools at low cost and in short order.       -- Larry Wall

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to