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>