XMLRPC::Liteでブログに投稿しようとするとWide characterで落ちる件【perlメモ】
Movable Type(以降MT)にperlからXMLRPC::Liteモジュールを使って書きこむサンプルを書いてみたら落ちるので調べてみた。
下のようなサンプルを書いてみた。
#!/usr/bin/perl
#
use strict;
use warnings;
use utf8;
use XMLRPC::Lite;
my $blogid = ‘<ブログのID>’;
my $username = ‘<ID>’;
my $password = ‘<パスワード>’;
my $proxyurl = "<XMRPCのURL>/mt-xmlrpc.cgi";
my $publish = 1; #0:非公開 1:公開
print "XMLRPC::Lite:$XMLRPC::Lite::VERSION\n";
my $NEWTITLE = ‘ちぇすとー’;
my $description = ‘てすとだよ。’;
my $mt_text_more = ‘テストの追記だよ’;
my $keywords2 = ‘きー1,きー2,きー3’;
my $msgresult = XMLRPC::Lite->proxy($proxyurl)->call(‘metaWeblog.newPost’,$blogid,$username,$password,{‘title’=>$NEWTITLE,’description’=>$description,’mt_text_more’=>$mt_text_more,’mt_keywords’=>"$keywords2",},$publish)->result;
if(!defined ($msgresult)){die "failed $!";}
print "send: msgresult:$msgresult\n";
exit(0);
実行するとWide characterのエラーで落ちる。
[kumacchi@localhost TEST]$ perl test01.pl
XMLRPC::Lite:0.712
Wide character in subroutine entry at /usr/lib/perl5/site_perl/5.8.8/XMLRPC/Lite.pm line 181.
最初は自分のプログラムの問題かと思ったが、utf8フラグを落としてみたり文字コードを変更してみても改善しないのでしらべてみた。
UTF8をPublish:MTにinputするとエラーで落ちる件 – Ysakaki's blog
結論としては上記ブログを参考に、rootになってviでLite.pmをの書き換えた。
[kumacchi@localhost TEST]$ su –
パスワード:
[root@localhost ~]# vi /usr/lib/perl5/site_perl/5.8.8/XMLRPC/Lite.pm
[root@localhost ~]# exit
logout
[kumacchi@localhost TEST]$
下記の様にコメントアウトした。
# base64 => [10, sub {$_[0] =~ /[^\x09\x0a\x0d\x20-\x7f]/}, ‘as_base64’],
これでエラーがで内容になりサンプルプログラムでブログへの投稿も可能になった。