in reply to Searching through a hash

$excel{$tab}{$row}{$col} = $cell->{Val}; ... foreach my $tab_name (keys %excel) { # Only intersted in "Customers" tab. next if $tab_name ne 'Customers'; my $rows = $excel{$tab_name}; foreach my $row_name (sort { $a <=> $b } keys %$rows) { my $cols = $rows->{$row_name}; # Not interested in rows where the first cell is blank. next if !$cols->{A}; ...[ Do something with %$cols ]... } }

Replies are listed 'Best First'.
Re^2: Searching through a hash
by hallikpapa (Scribe) on Nov 05, 2007 at 22:25 UTC
    Yeah that looks good, thanks! So with this %$cols, I have a question. When you put the % attached to $cols, is that telling perl that there's actually a hash stored in this variable, so let's treat it like that? I am going to do some XML manipulation when I figure out how to traverse the hash correctly. For testing right now, how would I iterate through the entire %$cols values, printing them out, and then jumping back up to the next $row when done. Thanks!

      $cols contains a reference to a hash. %$cols (short for %{$cols}) means to access the hash referenced by the reference in $cols. See perlref.

      my @sorted_col_names = sort { length($a) <=> length($b) || $a cmp $b } keys %$cols; foreach my $col_name (@sorted_col_names) { my $cell = $col->{$col_name}; print("$cell\t"); } print("\n");