in reply to Re^4: multi level hash terror - if statement to access specific elements
in thread multi level hash terror - if statement to access specific elements

...Removing the print doesn't help ... = 'Gay'

Why are you still using the assignment operator instead of the string equality comparison operator eq?

  • Comment on Re^5: multi level hash terror - if statement to access specific elements

Replies are listed 'Best First'.
Re^6: multi level hash terror - if statement to access specific elements
by hungrysumo79 (Initiate) on Feb 13, 2016 at 04:45 UTC
    Sorry that's a typo...but using the correct equality operator still results in all surnames getting printed

      Sorry that's a typo...but using the correct equality operator still results in all surnames getting printed

      Are all the surnames "Gay"?

      Is this what you have?

      my %names = ( abe => { lincoln => [ 'Cheddar', 'Cheddar', ], }, george => { washington => [ 'Gay', 'Gay', ], }, ); for my $key ( keys %names ) { for my $key2 ( keys $names{$key} ) { if ( $names{$key}{$key2}[0] eq 'Gay' ) { print "Last Name:" . $names{$key}{$key2}[1] . "\n"; } } } __END__ Last Name:Gay

      There is no lincoln/cheddar printed

      … the correct equality operator …
      Did you notice that == is not the correct equality operator? Most strings numerically evaluate to zero, so
      'apples' == 'pears'
      is true, while
      'apples' eq 'pears'
      is false.