#!/usr/bin/perl
use Net::Jabber;
$jabber = new Net::Jabber::Client();
$jabber->Connect(hostname => "fritalk.com",
port => 5222,
timeout => 90,
connectiontype => "tcpip",
ssl => 0);
@r = $jabber->AuthSend(username => "yannbng",
password => "********",
resource => "Perl-Net::Jabber",
register => 0);
$SIG{ALRM} = \&qqch;
$jabber->SetCallBacks( presence => \&handle_presence,
message => \&handle_message );
@contacts = $jabber->RosterGet();
$jabber->PresenceSend();
qqch();
print "Connecté !";
while(defined($jabber->Process())) { }
sub qqch {
$jabber->Process(1);
}
sub handle_message {
my $message = new Net::Jabber::Message(($_[1], $_[0]));
# my $message = new Net::Jabber::Message(@_);
my $jid = $message->GetFrom();
my $subject = $message->GetSubject();
my $body = $message->GetBody();
my $type = $message->GetType();
print "Message de $jid\n$subject\n$body\n$type";
$msg = Net::Jabber::Message->new();
$msg->SetMessage ( type => "message",
subject => "Test",
body => "test !");
$msg->SetTo($jid);
$jabber->Send($mdg);
}
sub handle_presence {
}
$jabber->Disconnect();
Lors de l'exécution, tout se passe bien au début, mais lorsque je reçois un message, le programme plante avec le message suivant (au niveau de la ligne en gras) :
Can't call method "XPath" on an undefined value at /usr/share/perl5/Net/XMPP/Stanza.pm line 556.
Si j'utilise l'alternative (@_ au lieu de ($_[0], $_[1])), j'obtiens le message suivant :
Can't call method "isa" without a package or object reference at /usr/share/perl5/Net/XMPP/Stanza.pm line 252.
Une recherche google m'indique que je ne suis pas le seul à avoir ce problème, mais je ne vois pas de réponses.. Que faire?
Je suis sous Debian Unstable avec Perl 5.8.4 et Net::Jabber 2.0
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.