command line interface mixi (1)

これから数回に分けてちょっとづつコマンドラインインターフェースのmixiクライアントを作ってみます。だんだんに機能をつけていけばよいということで。

#!c:/Perl/bin/perl
use strict;
use warnings;
use Term::ReadLine;
use WWW::Mixi;
use Data::Dumper;
my $mixi = new WWW::Mixi(
$mail_address,  #メールアドレス
$passwd,        #パスワード
-log => 10,
-logcode => 'sjis');
#環境変数(HTTP_PROXY)からproxy情報を読む
$mixi->env_proxy();
my $response = $mixi->login();
my %commands = (
'q' => \&quit,
'quit' => \&quit,
'exit' => \&quit,
'h' => \&help,
'help' => \&help,
'friend_list' => \&friend_list);
my $term = new Term::ReadLine 'command line interface mixi';
my $OUT = $term->OUT || \*STDOUT;
while (defined ($_ = $term->readline("mixi> "))) {
my $input = $_;
{
no strict "refs";
if ($commands{$input}) {
&{$commands{$input}} ;
} else {
print $OUT "ERROR: 不明なコマンドです。 [$input]\n";
help();
}
}
}
sub quit {
exit;
}
sub help {
print $OUT <<EOD;
q               終了する。
h help          ヘルプを表示する。
friend_list     マイミク一覧を表示する。
EOD
}
sub friend_list {
my @friend_list = $mixi->get_list_friend();
print "friend_list: " . Dumper(@friend_list);
}
exit;
# vim: ts=4 sw=4 expandtab

Term::ReadLine という便利なモジュールがあったので、ここまでは非常に簡単でした。%commandsのHashで、入力されるコマンドと実行するサブルーチンを定義しています。今のところ、終了とヘルプ表示しか書いていません。マイミク一覧表示は、Dumpしてるだけだし、windowsで実行してるので文字化けしてます。

ソースも改善の余地がありまくりますが、今日はここまで。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.