Perl モジュールを使用して、モジュールから他のプログラムにサブルーチンを発行するスタンドアロン ソケットにラップしたいと考えています。ただし、クライアント スクリプトでまだエラー メッセージが表示されるため、名前空間の問題を解決できない可能性があります。RPC::Serialized::X::Application\',\'MESSAGE\' => \'No handler for 'predejPOS ' .
私のサーバースクリプト:
use RPC::Serialized::Server::NetServer::Single;
use RPC::Serialized::Handler::HashTree;
my $s = RPC::Serialized::Server::NetServer::Single->new({
net_server => {log_file => '', port => 20203 },
rpc_serialized => {handler_namespaces => ''},
});
$s->run;
私のクライアントスクリプト:
use RPC::Serialized::Client::INET;
my $client = RPC::Serialized::Client::INET->new({
io_socket_inet => {PeerAddr => '127.0.0.1', PeerPort => 20203,}
});
my $result = $client->predejPOS('flu-like');
私のモジュール (HastTree.pm):
package RPC::Serialized::Handler::HashTree;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(predejPOS);
use base 'RPC::Serialized::Handler';
our $VERSION = '0.01';
sub predejPOS {
my %POS;
$POS{'flu-like'}='<JJ>';
return $POS{$_[0]};
};
1;
Windows 7、Strawberry Perl 5.12.3 を使用しており、モジュールは正しいアドレス (C:\PROGS\Strawberry\perl\site\lib\RPC\Serialized\Handler) にあります。関数 predejPOS はサーバー スクリプト内で認識されます (つまり、その結果を出力できます) が、クライアント サーバー通信を介してアクセスすることはできません。関数の呼び出しとメソッドの呼び出しの微妙な違いと関係があると思います。おそらく単純なことだと思いますが、かなりの努力とグーグル検索を行った後でも、機能させることができませんでした。
前もって感謝します!