Config::Pitが使えません
Config::Pitってのを最近知って便利そうだったので使おうと思ったのですが・・・なぜか使えん!
インストールして、ppit set 'twitter.com' とコマインドラインから実行して情報登録したりはできるんですが、メール受信時処理で利用できん!(たぶん普通にターミナルからスクリプト実行する時やcgi呼び出しだったら使えると思う。たぶん。ためしてないけどw)
うーん、環境変数が設定されてないからエラーになってんのかなぁ。設定するスクリプト噛ませばいいのかなぁ・・・。なんか汚くていやだなあ・・・。
というわけでConfig::Pitが使えませんでした。残念。
書いたのはこんなの(前に書いた、メールからTwitter更新のMIME::Parser使用版)
#!perl use strict; use warnings; use Encode; use MIME::Parser; use Net::Twitter; my $config = { username => 'twitter_username', # password => 'twitter_password', # postmail => 'twitter@postmail', # }; my $twit = Net::Twitter->new({ username => $config->{username}, password => $config->{password}, }); my $mail_parser = new MIME::Parser; my $entity = $mail_parser->parse(\*STDIN); my $from = Encode::decode('MIME-Header', $entity->head->get('From')); my $subject = Encode::decode('MIME-Header', $entity->head->get('Subject')); my $body_entity = ($entity->is_multipart) ? $entity->parts(0) : $entity; my $body = Encode::decode($entity->head->mime_attr('Content-Type.charset'), $body_entity->bodyhandle->as_string); chomp($from, $subject, $body); unless($from =~ /^([\s\S]*<)?$config->{postmail}>?$/i ) { exit; } my $msg = $subject.$body; if($msg) { $twit->update(Encode::encode('utf8', $msg)); } exit;
Config::Pitが使えたら
use Config::Pit; my $config = pit_get("twitter.com", requires => { username => "username on twitter.com", password => "password on twitter.com", postmail => "postmail on twitter.com", });
とか書けるみたいなんですけどね〜。
(ちなみに環境はさくらインターネットの共有サーバー)
あと、エンコードの仕方とか、これで正しいのか謎なんですけど。メール受信とかで検索しても、jcode.plでshiftjisに変換する、とかが引っかかるんですが今でもみなさんそんなことやってんの?(そんなわけねーな感じ満載だよなぁ
まあいいや。
さて、「オブジェクト指向Perlマスターコース」とかいう本を借りたので、よし!勉強するぜ!するんだぜ! と意気込んでたんですが、一章目にしてスローダウン。これ読んでてもわかる気しないんだけど・・・、定義はそこそこに読み飛ばして後で戻ってくるとかでも良いもんかな・・・。
※メールを取り扱うモジュールは、Email::MIME を使うのが一般的(?)みたいですね。今度やってみよう。