メールデータの処理をしたいけど、モジュールで簡単に扱うために… 動作確認のためのサンプルプログラム。 以前は、正規表現やら状態遷移やら考えながら、 えっちら・おっちらと処理してたけど、モジュール使うと簡単ね。
#!/usr/bin/perl use Jcode ; use Mail::Internet ; use Mail::Address ; use MIME::Words ; # メールヘッダ・本体を標準入力から読み込む $mail = new Mail::Internet \*STDIN ; $head = $mail->head->header_hashref ; # From ヘッダを解析 @from = Mail::Address->parse( $head->{From}[0] ) ; print "From: ".$from[0]->address()."\n" ; # Subject を解析・デコード $subject = MIME::Words::decode_mimewords( $head->{Subject}[0] ) ; Jcode::convert( $subject , "euc" ) ; print "Subject: $subject\n" ; # メールヘッダの表示 $c = 0 ; foreach $key ( keys %{$head} ) { $c++ ; $d = 0 ; foreach $item ( @{$head->{$key}} ) { print $c.":".++$d.":" ; print $key." => ".$item ; } } # メール本文の表示 $c = 0 ; foreach $line ( @{$mail->body} ) { print ++$c.":" ; Jcode::convert( $line , "euc" ) ; print $line ; }