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
|