XMLRPC::Liteの警告
PingBadge ver.3を作っているのだが、-wオプションのせいか、どうもApacheのエラーログにwarningが出る。
XMLRPC::Transport::HTTP::CGI->dispatch_to('weblogUpdates')->handle;
Use of uninitialized value in pattern match (m//) at /Library/Perl/5.8.6/SOAP/Lite.pm line 2229.
まぁ、warningだけなので問題なく動くのだが、気持ちが悪いので探ってみた。
SOAP/Lite.pmの2229行目は次のようになっている。
2229: if (defined($class = $self->dispatch_with->{$method_uri} 2230: || $self->dispatch_with->{$action || ''} 2231: || ($action =~ /^"(.+)"$/ ? $self->dispatch_with->{$1} : undef))) {
パターンマッチがおかしいらしいので、つまり$actionが設定されていないのだろうと思われる。$actionをセットする部分をさかのぼってみてみると、
2221: $self->on_action->(my $action = $self->action, $method_uri, $method_name);
これらしい。つまり、$self->actionでundefが返されたときに問題が起きるのかな。次のように変えてみる。
2221: $self->on_action->(my $action = $self->action || '', $method_uri, $method_name);
これで$self->actionがundefを返しても空の文字列がセットされている事になる。
この変更でApacheのエラーログを読むと、warningは出なくなった。まだちょっと腑に落ちない部分があるのだが、本体側を何とかしないといけないので、とりあえずはOKとしよう。