in reply to Re: Brief Hash Tutorial
in thread Brief Hash Tutorial

Thanks for the reply. I see now, I was confusing a hash and hashref. That got me over the first hurdle but now I guess I don't understand Mail::Field as it does not seem to return a 'parse_tree' but rather just a text sting. I need to look for some examples. I might be back.

Replies are listed 'Best First'.
Re^3: Brief Hash Tutorial
by wfsp (Abbot) on Aug 31, 2008 at 10:02 UTC
    According to the docs $received->parse_tree() returns a hashref. The example output shows that it is a hash of hashes (and in the case of comments a HoHoA). With that in mind the below shows how you might loop over such a structure and how to print just the 'domain' value of the 'by' hash.

    You might also want to print your $header string (a better name than $string, by the way) to confirm that it is of a form acceptable to the module.

    #!/usr/local/bin/perl use strict; use warnings; # snippet from docs my $parse_tree = { 'by' => { 'domain' => 'host5.hostingcheck.com', 'whole' => 'by host5.hostingcheck.com', 'comments' => [ '(8.9.3/8.9.3)' ], }, }; my $by = $parse_tree->{q{by}}; for my $key (keys %{$by}){ print qq{$key -> }; if ($key eq q{comments}){ for my $comment (@{$by->{$key}}){ print qq{$comment, }; } print qq{\n}; } else{ print qq{$by->{$key}\n}; } } print qq{\n\n}; print qq{by -> domain: $parse_tree->{q{by}}{q{domain}}\n};
    outputs
    whole -> by host5.hostingcheck.com domain -> host5.hostingcheck.com comments -> (8.9.3/8.9.3), by -> domain: host5.hostingcheck.com