perl -MCPAN -e shell
とやると cpanのプロンプトになるので、
install Net::Twitter
とやればいいのだが、やたら長い上に最後にエラーになる。 ダラダラと出ているログは読んでられないのでまずサーチする。 失敗している人が散見され、いろいろ回避策が公開されていたがどれを試してもダメ。 結局、ログを見て、can't locate といわれているmoduleを片っ端から入れていった。 Math::Round とか。 あと、opensslのライブラリ(?)がないみたいなことを言われるので
yum install -y openssl-devel
をやった。
cpanのモジュールは依存関係にあるものを勝手にいれるんじゃなかったっけ? そんな親切なのはppm installだけなのか?
bot
use strict; use warnings; use utf8; use Encode; use Net::Twitter; binmode STDOUT, ':utf8'; my $twit = Net::Twitter->new( traits => [qw/API::REST OAuth WrapError/], consumer_key => 'YOUR_CONSUMER_KEY', consumer_secret => 'YOUR_CONSUMER_SECRET', ssl => 1, ); $twit->access_token ('YOUR_ACCESS_TOKEN'); $twit->access_token_secret('YOUR_ACCESS_TOKEN_SECRET'); while (1){ my $line; open(my $file, "<tweets.txt"); rand($.)<1 and $line = $_ while <$file>; close $file; my $decoded = Encode::decode('utf8', $line); $twit->update($decoded); sleep 3600; } exit;テキストファイルからランダムに1行ずつ選んでツイートする、簡単なボット。 ちょっと手間取ったのは日本語の扱い。 tweets.txt は utf8で保存してあるのだが、なぜかそのまま Net::Twitterに渡すと文字化けする。 リテラルは化けない。 いろいろ調べて、utf8をいったんデコードして渡すという、ちょっと釈然としないやり方で解決。