It was Friday, February 21, 2003 when Dan Muey took the soap box, saying:
: 
: > 
: > It was Friday, February 21, 2003 when Dan Muey took the soap 
: > box, saying:
: > : Hello list,
: > : 
: > : What is the best way to get the headers of an email into a 
: > hash and also the text part of the body into an array or variable?
: > 
: > Mail::Internet->new() accepts a list reference full of lines 
: > in an email message.  This is nice, since getting a list from 
: > STDIN is not difficult.
: > 
: >   my $mail = Mail::Internet->new( [ <STDIN> ] );
: >   my $headers = $mail->head->header_hashref;
: >   my $subject = $headers->{Subject};
: 
: Thanks again Casey here's what I tried ::
: 
: 
: #!/usr/bin/perl
: 
: use Mail::Internet;
:   my $mail = Mail::Internet->new( [ <STDIN> ] );
:   my $headers = $mail->head->header_hashref;
:   my $subject = $headers->{Subject};
:  
: print $subject;
: 
: OUTPUT 
: ARRAY(0x80da1ec)
: 
: 
: If I change the my $subject line to :
: my @subject = @{${$headers}{'Subject'}}; # or otherwsie do it in list context it 
works
: OUTPUT
: mail parse test
: 
: I tried doing 
:   my ($subject) = $headers->{Subject}; 
: And other ways of doing it list context all return
: ARRAY(0x80da1ec)
: 
: Any ideas??

Oh yes, I forgot about this.  Email can have multiple headers of the
same name, so this is Mail::Header making sure those types of
headers are not clobbered.  You fixed it correctly above, but if you
want an easier approach, this is what I would go with.

  my $subject = $headers->{Subject}->[0];

  Casey West

-- 
Corollary to Godwin's Law:
"As a p5p thread grows longer, the probability of a bad pun approaches
 one.  Once this occurs, that thread is over, and whoever inflicted
 the pun is beaten to within an inch of his life." -- Michael G. Schwern


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to